2012-03-14 64 views
3

這裏是我的代碼:如何從複選框PARAMS在Rails3中控制器

<%=form_tag('/user_group_follows/follow',:id=>'follow_select_form',:remote=>true,:method=>:get) do %> 
    <p>You want to add this user to?</p> 
    <%=hidden_field_tag 'user_id',@user.id%> 
    <%@user.user_groups.each do |ug|%> 
     <%=check_box_tag 'user_group_id',ug.id,false,{:id=>'user_group_id_'+ug.id.to_s}%><%=ug.name%><br/> 
    <%end%> 
<%end%> 
//using jquery-ui, so there is no submit button.... 

我想對用戶進行多重選擇,以決定他/她想加入到下面的列表哪個組。

所以我做了幾個複選框具有相同的名稱爲「user_group_id」和不同的ID。 我能順利拿到throught PARAMS的PARAMS [:user_group_id],如果用戶只檢查一個盒子。但是,如果他真的檢查了其中的幾個,如何獲得這個值設置在控制器?在這種情況下,params [:user_group_id]只能獲得其中一個。我相信這樣的代碼:params [:user_group_id_ + XXX.id]是不會工作的....

回答

5

如果你把它們命名爲ID爲user_group_id['+ug.id+'],我認爲你應該得到像params[:user_group_id]這樣的參數應該包含一個檢查的所有組的ID的數組。

這樣的事情,不知道到底,但基本上你希望把你的領域,使得它們的他們是如何命名的自然組合成一個陣列,憑藉:

<%=check_box_tag 'user_group_id['+ug.id']',ug.id,false,{:id=>'user_group_id_'+ug.id.to_s}%><%=ug.name%> 

所以,params[:user_group_id].first將包含所選第一個複選框的ID。

+0

EM去...我認爲這是不工作,則params [:user_group_id] 。首先只返回1,但實際上預期user_group_id應爲28和29 ... – 2012-03-15 07:33:29

+1

好了,我已經知道了,代碼應該是:<%= check_box_tag「user_group_id []」%>,以便Rails會認識PARAMS [:user_group_id]作爲數組!還是要謝謝你,你的回答確實有很大的暗示! – 2012-03-15 08:12:16

+0

是的!而已。真高興你做到了。 – jefflunt 2012-03-15 13:08:28

0

如果以這種方式<%= check_box_tag 'user_group_id []' %>它返回選定的ID陣列,

<%=check_box_tag 'user_group_id',ug.id, params[:user_group_id].try(:include?,ug.id.to_s),{:id=>'user_group_id_'+ug.id.to_s}%>