如何从collection_select中获取控制器中的参数

时间:2015-07-17 13:57:14

标签: ruby-on-rails ruby-on-rails-4

我尝试在视图中处理来自collection_select的数据:

    <%= form_for(:group, :url => {:action => 'update', :group_id => @group.id}) do |f| %>       
            <th>New member</th>
            <td><%= f.collection_select(:members, @users, :id, :first_name) %></td>
            <%= submit_tag("Update Group") %>
    <% end %>

但是我无法在控制器中获取它:

member_id = params[:member]
puts member_id.inspect

在控制台中检查结果:

  

但是当我收到错误时,我可以看到member_id存在:

undefined method `each' for "1":String
     "utf8"=>"✓",
     "authenticity_token"=>"GxCd==",
     "group"=>{"name"=>"G7",
     "members"=>"1"},
     "commit"=>"Update Group",
     "group_id"=>"4"

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

如果您查看发布的错误,可以看到params是以下哈希值;

{
    "utf8"=>"✓",
    "authenticity_token"=>"GxCd==",
    "group"=> {
        "name"=>"G7",
        "members"=>"1"
    },
    "commit"=>"Update Group",
    "group_id"=>"4"
}

params[:group]是一个嵌套哈希值,因此要访问您的成员键,它将是params[:group][:members]

答案 1 :(得分:0)

要获得member_id您必须致电:

params[:group][:members] # = "1"
相关问题