2015-07-17 2 views
0

Я стараюсь обрабатывать данные из collection_select в представлении:Как получить Params в контроллере от 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" 

Спасибо за вашу помощь!

+0

Ваша форма имеет ': event' и ваш' params' показывая, что они происходят из 'group'. Вы отправили неправильный код? – Pavan

+0

А также эта строка 'puts desc.inspect' не имеет никакого смысла. – Pavan

+1

Можете ли вы добавить значение 'params' к вашему вопросу? –

ответ

1

Если вы посмотрите на ошибки вы в курсе, вы можете увидеть, что params следующая хэш;

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

params[:group] является вложенной хэш, так чтобы доступ к своим членам ключ было бы params[:group][:members]

+0

спасибо, он работает! – BlackMat

+0

Нет проблем. Не забудьте принять (зеленый тик) один из ответов, если вы счастливы. – tombeynon

0

Чтобы получить member_id вы должны вызвать:

params[:group][:members] # = "1"