从Ruby on Rails 3中的另一个控制器渲染表单

时间:2011-10-13 04:18:18

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

好的,问题是尝试从控制器渲染表单以创建新条目..为此我调用脚手架创建附带的默认表单 我试图这样做:

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

我得到以下错误

undefined method 'model_name' for NilClass:Class

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

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

现在我只有以下代码:

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

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

好的,我做了一项非常大的研究,但没有答案可以解决我的问题。 (这是我第一次提出问题,提前抱歉我可以犯下的任何错误)

3 个答案:

答案 0 :(得分:6)

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

因为您正在建立新联系人,所以您必须在动作索引中执行以下操作:

@contact = Contact.new

答案 1 :(得分:2)

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

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

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

和@user未在控制器操作中初始化,从我们呈现表单的位置,这可能发生。

答案 2 :(得分:0)

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

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

<%= render 'contactos/form'  %>