【问题标题】:Rendering a form from another controller in Ruby on Rails 3在 Ruby on Rails 3 中从另一个控制器呈现表单
【发布时间】:2011-12-06 15:46:59
【问题描述】:

好的,问题是尝试从控制器渲染表单以创建新条目。为此,我调用了脚手架创建时附带的默认表单 我正在尝试使它像这样:

<%= render :partial => 'contactos/form'  %> 

我得到以下错误

undefined method 'model_name' for NilClass:Class

有没有办法只从视图本身进行渲染?

如果没有...我应该向控制器添加哪些参数?

现在我只有以下代码:

Class DisplayController < ApplicationController
     def index
        @contactos = Contacto.all
     end
end

*这是视图控制器,不是我的脚手架中具有创建更新和编辑功能的视图控制器

好的,我进行了一项非常大规模的研究,但没有任何答案可以解决我的问题。 (这是我第一次问问题,如有错误,请提前道歉)

【问题讨论】:

    标签: ruby-on-rails model-view-controller ruby-on-rails-3.1 scaffolding


    【解决方案1】:

    您需要确保在渲染部分表单之前定义了表单部分中使用的参数。

    你也不需要部分,你可以放:

    <%= render 'contactos/form'  %> 
    

    【讨论】:

      【解决方案2】:

      问题是您在联系人表单中使用的变量不存在。您在索引操作中创建的唯一变量是所有联系人的数组,但表单需要单个联系人的单个实例。

      因为你正在建立一个新的联系人,你必须在操作索引中做这样的事情:

      @contact = Contact.new
      

      【讨论】:

        【解决方案3】:

        通常当我们在视图中使用实例变量但它是 nil 时会发生这种情况。

        例如:在我们使用的新用户创建表单中,

        form_for @user do |f|
        ....
        end
        

        并且@user 没有在控制器操作中初始化,从我们渲染表单的地方,这可能会发生。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-03
          • 1970-01-01
          • 1970-01-01
          • 2012-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多