Rails:嵌套属性内的数组列参数数量错误(给定0,应为1..2)

下午好

我不知道它是否相关,但是我正在使用Cocoon Gem。

我要保存的主要资源是财产。

我已经将此属性的嵌套属性称为 property_unit_attributes

params.require(:property).permit(
 ...
property_units_attributes: [:id, :rent, :floor, :suite_number, :square_feet, :unit_type[], :ceiling_height, :condition, :amenities, :_destroy]
);

问题在于unit_type嵌套表单上的复选框是否接受这些属性

我将不包括整个表单,因为除我的数组外,所有属性均正确保存。这是我下面的一些复选框字段:unit_type

<div class="field">
        <%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'condominium', nil %>
        <label>Condominium</label>
      </div>

      <div class="field">
        <%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'general_business', nil %>
        <label>General Business</label>
      </div>

      <div class="field">
        <%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'health_care', nil %>
        <label>Health Care</label>
      </div>

      <div class="field">
        <%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'hostpitality_or_hotel', nil %>
        <label>Hospitality / Hotel</label>
      </div>

以及呈现的HTML的示例:

<div class="field">
   <input class="field__checkbox" type="checkbox" value="land" name="property[property_units_attributes][0][unit_type][]" id="property_property_units_attributes_0_unit_type_land">
   <label>Land</label>
      </div>

当我提交表单时,所有属性都显示在请求中。我将仅介绍以下属性:

"property_units_attributes"=>{"0"=>{"rent"=>"33.0", "floor"=>"33", "suite_number"=>"[FILTERED]", "square_feet"=>"33", "unit_type"=>["condominium", "industrial", "office"], "ceiling_height"=>"33.0", "condition"=>"3", "amenities"=>"3", "id"=>"10"}},

如您所见,我选中了三个复选框,它们被放置在一个数组中:

"unit_type"=>["condominium", "industrial", "office"]

提交时,出现此错误: wrong number of arguments (given 0, expected 1..2)

这发生在我添加[]:unit_type下嵌套属性参数(见上文)。

如果我将其删除,则将提交表单,但不会保存该列。

我想重申所有其他字段正确保存。仅此数组列会完全忽略它。

如果您需要应用程序其他部分的更多信息或更多代码,请在评论中告知我。

最高

要将标量值数组列入白名单,您需要传递带有空数组的哈希键:

params.require(:property).permit(
 ...
  property_units_attributes: [
      :id, :rent, :floor, :suite_number, 
      :square_feet, :unit_type, :ceiling_height, 
      :condition, :amenities, :_destroy,
      unit_type: []
  ]
)

这个语法看起来像是黑魔法,但实际上只是普通的旧红宝石:

irb(main):001:0> [:foo, :bar, baz: 1]
=> [:foo, :bar, {:baz=>1}]

为什么会:unit_type[]导致“参数数量错误(给定0,应为1..2)”?

如果尝试:unit_type[0],可以看到它调用了符号上的方括号访问器方法:unit_type

irb(main):014:0> :unit_type[0]
=> "u"
irb(main):015:0> :unit_type.method("[]")
=> #<Method: Symbol#[](*)>

如果要声明带有方括号的符号或其他具有特殊意义的字符,Ruby对此有特殊的语法:

:"unit_type[]" 

当然,这无法解决问题,因为Rack已经将以方括号结尾的所有参数扩展为数组和哈希。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails:参数数量错误(给定2个,预期为1个)MongoID

来自分类Dev

Ruby on Rails和Mongomapper:错误的参数数量(2对1)

来自分类Dev

错误的参数数量(1表示2)

来自分类Dev

发生 WebSocket 错误:参数数量错误(给定 2,预期为 1)

来自分类Dev

控制器规范中的参数数量错误(给定 2,预期为 0)

来自分类Dev

Jekyll:参数数量错误(给定2个,预期为1个)(ArgumentError)

来自分类Dev

ArgumentError:Update_Attribute 方法的参数数量错误(给定 1,预期为 2)

来自分类Dev

Rails ActiveCampaign gem-错误的参数数量(2为1)

来自分类Dev

错误的参数数量(2为1)RoR错误

来自分类Dev

Docker运行产生错误``初始化'':错误的参数数量(给定2个,预期为1个)(ArgumentError)

来自分类Dev

路由设置的参数数量错误(2为0)

来自分类Dev

运行 Rspec 和 Sinatra 时,我不断收到 ArgumentError:参数数量错误(给定 2,预期为 0)

来自分类Dev

控制器中错误的参数数量(1对2)

来自分类Dev

RailsTutorial第6章错误的参数数量(1对2)

来自分类Dev

ActiveRecord.find错误的参数数量2为1

来自分类Dev

RailsTutorial第8章错误的参数数量(1对2)

来自分类Dev

生成的RSpec控制器测试失败,参数数量错误(给定2个,预期为1个)

来自分类Dev

RSpec-如何修复-ArgumentError:错误的参数数量(给定0,应为1)-Ruby

来自分类Dev

模板化,如果失败并出现编译器错误错误:模板参数数量错误(2,应为3)

来自分类Dev

rails 4-错误的参数数量(2为1)-stylesheet_link_tag和javascript_include_tag

来自分类Dev

在Rasack范围内,参数数目错误(给定0,应为1)

来自分类Dev

自我保存!产生参数错误#<ArgumentError:参数数量错误(0表示2)>

来自分类Dev

在将我的应用程序从Rails 3.2.13升级到4.2后,link_to停止工作(错误的参数数量(0表示0表示2)

来自分类Dev

为什么此create语句给出错误“ ArgumentError:错误的参数数量(1表示2)”?

来自分类Dev

更新宝石,现在出现错误:ActionView::Template::Error(参数数量错误(2 代表 1)):

来自分类Dev

Ruby on Rails:参数数量错误(给定 0,预期为 1)

来自分类Dev

Rails 5升级:/actionpack-5.0.0/lib/action_controller/test_case.rb:49:in`initialize':错误的参数数量(0代表2)(ArgumentError)

来自分类Dev

ActiveRecord创建without_protection-错误的参数数量(2为1)

来自分类Dev

尝试从SQL Server访问查询结果时得到“参数数量错误(2为1)”

Related 相关文章

  1. 1

    Rails:参数数量错误(给定2个,预期为1个)MongoID

  2. 2

    Ruby on Rails和Mongomapper:错误的参数数量(2对1)

  3. 3

    错误的参数数量(1表示2)

  4. 4

    发生 WebSocket 错误:参数数量错误(给定 2,预期为 1)

  5. 5

    控制器规范中的参数数量错误(给定 2,预期为 0)

  6. 6

    Jekyll:参数数量错误(给定2个,预期为1个)(ArgumentError)

  7. 7

    ArgumentError:Update_Attribute 方法的参数数量错误(给定 1,预期为 2)

  8. 8

    Rails ActiveCampaign gem-错误的参数数量(2为1)

  9. 9

    错误的参数数量(2为1)RoR错误

  10. 10

    Docker运行产生错误``初始化'':错误的参数数量(给定2个,预期为1个)(ArgumentError)

  11. 11

    路由设置的参数数量错误(2为0)

  12. 12

    运行 Rspec 和 Sinatra 时,我不断收到 ArgumentError:参数数量错误(给定 2,预期为 0)

  13. 13

    控制器中错误的参数数量(1对2)

  14. 14

    RailsTutorial第6章错误的参数数量(1对2)

  15. 15

    ActiveRecord.find错误的参数数量2为1

  16. 16

    RailsTutorial第8章错误的参数数量(1对2)

  17. 17

    生成的RSpec控制器测试失败,参数数量错误(给定2个,预期为1个)

  18. 18

    RSpec-如何修复-ArgumentError:错误的参数数量(给定0,应为1)-Ruby

  19. 19

    模板化,如果失败并出现编译器错误错误:模板参数数量错误(2,应为3)

  20. 20

    rails 4-错误的参数数量(2为1)-stylesheet_link_tag和javascript_include_tag

  21. 21

    在Rasack范围内,参数数目错误(给定0,应为1)

  22. 22

    自我保存!产生参数错误#<ArgumentError:参数数量错误(0表示2)>

  23. 23

    在将我的应用程序从Rails 3.2.13升级到4.2后,link_to停止工作(错误的参数数量(0表示0表示2)

  24. 24

    为什么此create语句给出错误“ ArgumentError:错误的参数数量(1表示2)”?

  25. 25

    更新宝石,现在出现错误:ActionView::Template::Error(参数数量错误(2 代表 1)):

  26. 26

    Ruby on Rails:参数数量错误(给定 0,预期为 1)

  27. 27

    Rails 5升级:/actionpack-5.0.0/lib/action_controller/test_case.rb:49:in`initialize':错误的参数数量(0代表2)(ArgumentError)

  28. 28

    ActiveRecord创建without_protection-错误的参数数量(2为1)

  29. 29

    尝试从SQL Server访问查询结果时得到“参数数量错误(2为1)”

热门标签

归档