在rails中渲染新关联对象的表单

时间:2014-11-29 22:49:01

标签: ruby-on-rails

我在创建关联方面遇到了麻烦;

我的模型是表和列(一个表到多列)。

在我的ColumnsController中:

def new
    @table = Table.find(params[:id])
    @column = @table.columns.build
end  

在我的app / views / tables / show.html.erb中:

<%= @table.name %></dd>
<%= render "columns/form" %>

在我的app / views / columns / _form.html.erb中:

<%= form_for  @column, :url => {:action => :create, :id => @table.id }do |f| %>
<%= f.label :name  %>
<%= f.text_field :name %>
<%= f.button :submit%><% end %>

当我运行它时:

undefined method `model_name' for NilClass:Class
Extracted source (around line #1):
<%= form_for  @column, :url => {:action => :create, :id => @table.id } do |f| %>

为什么? : - (

1 个答案:

答案 0 :(得分:1)

尝试使用partials和局部变量:

<%= render partial: "columns/form", locals: {table: @table, column: @column} %>

<%= form_for  column, :url => {:action => :create, :id => table.id }do |f| %>

如果您希望它更简单,您可以这样做:

<%= render partial: "columns/form", locals: {table: @table} %>

<%= form_for table.columns.new do |f| %>