【问题标题】:Rails: Using an object in an array as the object argument for collection_selectRails:使用数组中的对象作为collection_select的对象参数
【发布时间】:2017-07-15 18:31:00
【问题描述】:

我需要使用数组中的一个对象作为collection_select 的对象参数,并使用form_tag 帮助器,但我的参数哈希格式不正确。

例子:

<%= form_tag(picks_path, method: :post) do %>
  <% @awards.each do |award| %>

    <%= hidden_field_tag "picks[][user_id]", 1 %>
    <%= hidden_field_tag "picks[][game_id]", 1 %>
    <%= hidden_field_tag "picks[][award_id]", award.id %>

    <%= label_tag "picks[][:first_pick]", "First Pick" %>
    <%= collection_select("picks[][:first_pick]",
         :first_pick, award.nominations, :id, :nominee) %>

  <% end %>

<%= submit_tag 'Submit' %>
<% end %>

此参数哈希中的结果带有额外的嵌套...

"picks"=>[{"user_id"=>"1", "game_id"=>"1", "award_id"=>"1", ":first_pick"=>{"first_pick"=>"1"}}, {"user_id"=>"1", "game_id"=>"1", "award_id"=>"2", ":first_pick"=>{"first_pick"=>"3"}}]

当我真正想要的是这样......

"picks"=>[{"user_id"=>"1", "game_id"=>"1", "award_id"=>"1", "first_pick"=>"1"}, {"user_id"=>"1", "game_id"=>"1", "award_id"=>"2", "first_pick"=>"3"}]

我试过用这个...

<%= collection_select("picks[]", :first_pick, award.nominations, :id, :nominee) %>

但我得到了这个例外......

object[] 命名但 object param 和 @object var 不存在或不存在 回复 to_param: nil

我是否在这里遗漏了一些特殊语法,或者这不是通过一个提交按钮从一个表单中实现多个条目的传统方式?

【问题讨论】:

    标签: ruby-on-rails forms collection-select


    【解决方案1】:

    试试each.inject,类似这样:

    <% @awards.each.inject([]) do |collection_select, award| %> collection_select << { first_pick: award[:first_pick], nominations: award[:nominations], id: award[:id], nominee: award[:nominee]}

    If your award main object don't hold some values, u can hard coded it in each hash value i.e: id: 1, nominee: 'anything'

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2013-09-06
      • 2016-04-09
      • 1970-01-01
      • 2015-07-15
      • 2016-07-06
      • 2023-03-12
      相关资源
      最近更新 更多