复选框,不将String隐式转换为Integer

时间:2019-05-01 15:52:01

标签: ruby-on-rails ruby-on-rails-6

我不知道这是怎么回事。我在模型中使用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的情况下成功创建。

0 个答案:

没有答案