Как получить параметры из флажка в rails3 контроллерах - PullRequest
3 голосов
/ 14 марта 2012

Вот мои коды:

<%=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' и разными идентификаторами. Я мог бы успешно получить параметры через params [: user_group_id], , если пользователь установил только один флажок. Но если он действительно проверил несколько из них, как получить это значение в контроллере? В этом случае params [: user_group_id] может получить только один из них. И я вполне верю, что такие коды, как: params [: user_group_id_ + XXX.id] не будут работать ....

Ответы [ 2 ]

5 голосов
/ 14 марта 2012

Если вы называете их с идентификаторами как user_group_id['+ug.id+'], я думаю, вы должны получить параметры вроде params[:user_group_id], которые должны содержать массив всех идентификаторов групп, которые были проверены.

Примерно так, не совсем точно, но в основном вы хотите назвать свои поля так, чтобы они естественным образом сгруппировались в массив, в зависимости от того, как они названы:, params[:user_group_id].first будет содержать идентификатор первого флажка, который был выбран.

0 голосов
/ 08 октября 2014

если вы идете таким образом <% = check_box_tag 'user_group_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}%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...