我不知道这是怎么回事。我在模型中使用accepts_nested_attributes_for
,并且每当id在参数,数组中时,就会在create
上发生此问题:
没有将String隐式转换为Integer
Foo模型:
has_many :foo_perks, dependent: :destroy
has_many :perks, through: :foo_perks
accepts_nested_attributes_for :foo_perks, :another_one, allow_destroy: true
Foo Controller
# create
Foo.create(foo_params) # Issue here
# private
def foo_params
params.require(:foo).permit(foo_perks_attributes: [ perk_id: [] ]) # omitted title and other
end
相当标准的东西。视图:
[..] # form_for(..)
<%= f.fields_for :foo_perks_attributes do |fp| %>
<% @perks.each do |perk| %>
<%= fp.check_box(:perk_id, { multiple: true }, perk.id, nil) %>
<% end %>
<% end %>
<% end %> # end of form_for
已提交参数的示例:
"foo"=>{"title"=>"", "foo_perks_attributes"=>{"perk_id"=>["4"]}}
当我在控制台中手动创建foo_perks
时,看不到任何问题,也没有错误。我在许可证上做错了吗?
Foo
在没有传递ID的情况下成功创建。