Ruby on rails Rails 4嵌套形式-无符号到整数的隐式转换
在我的rails 4应用程序中,我有一个三层嵌套的路由:Ruby on rails Rails 4嵌套形式-无符号到整数的隐式转换,ruby-on-rails,nested-forms,ruby-on-rails-4,Ruby On Rails,Nested Forms,Ruby On Rails 4,在我的rails 4应用程序中,我有一个三层嵌套的路由: devise_for :users do resources :foo do resources :marflar end end 我有一个表单,用于创建一个带有嵌入Marflar对象的新Foo: <%= form_for(@foo) do |f| %> <%= f.text_field :foo_attr %> <%= f.fields_for :marflars_attribu
devise_for :users do
resources :foo do
resources :marflar
end
end
我有一个表单,用于创建一个带有嵌入Marflar对象的新Foo:
<%= form_for(@foo) do |f| %>
<%= f.text_field :foo_attr %>
<%= f.fields_for :marflars_attributes do |marflars_form| %>
<%= marflars_form.text_field :marflar_attr %>
<% end %>
<%= f.submit %>
<% end %>
我的Foo控制器的相关部分如下所示:
def new
@foo = current_user.foos.build
@foo.marflars.build
end
def create
@foo = Foo.new(foo_params)
if @foo.save
redirect_to @foo
else
render action: 'new'
end
end
..
def foo_params
params.require(:foo).permit(:foo_attr, marflars_attributes: [:marflar_attr])
end
我的模型和你期望的一样:
class Foo < ActiveRecord::Base
belongs_to :user
has_many :marflars, dependent: :destroy
accepts_nested_attributes_for :marflars, allow_destroy: true
end
class Marflar < ActiveRecord::Base
belongs_to :foo
end
class Foo
为什么这样不行?它快把我逼疯了。我正在考虑切换到表单对象,但我想先让它工作。您的
调用的字段\u应该是
<%= f.fields_for :marflars do |marflars_form| %>
<%= marflars_form.text_field :marflar_attr %>
<% end %>
Rails负责嵌套属性所期望的参数命名约定 非常感谢,这解决了我遇到的错误。我现在得到了一个堆栈级别太深的错误,但如果我不能自己修复它,我将为此提出一个新问题。干杯
<%= f.fields_for :marflars do |marflars_form| %>
<%= marflars_form.text_field :marflar_attr %>
<% end %>