2017-04-20 50 views
0

我想添加一个复选框到页面上的一个元素上,然后将一个ID集合(如果选中该复选框)传递给控制器​​。带复选框标签和按钮的传递id集合

在我看来,我有...

<% @roles.each do |role| %> 
     <li> 
     <%= check_box_tag 'blah_ids[]', role.id -%> 
     <%= h role.name -%> 
     </li> 
    <% end %> 

...只有这个提交按钮...

<%= button_to 'Call Action', bulk_update_path('blah_ids[]'), method: :post %> 

在我的控制,我只是呼吁一个看跌期权PARAMS像这样...

def bulk_update 
    puts "Made it to controller; ids are: " + params.inspect 
    redirect_to blah_path 
    end 

...并获得...

Made it to controller; ids are: {"authenticity_token"=>"0ptHDPrSW9sjRYmsoPb/WyuTQxiR60RzVom9h4HjdWo=", "controller"=>"blah", "action"=>"bulk_update", "format"=>"blah_ids[]"} 

注意blah_ids[]上面是空白。我期待看到选中的复选框的ID。任何帮助赞赏。

+0

我没有得到你的问题。但是我发现在收集路径中未指定的参数被视为'params [:format]'的格式或值,就像你的控制器检查参数一样。 – Mayank

+0

@Mayank我更新了这个问题。注意上面的blah_ids []是空的。我期待看到选中的复选框的ID。 – Lumbee

回答

0

的问题是,我需要这个包在我认为一个的form_tag和使用泛型submit_tag是这样的...

<%= form_tag bulk_update_path(method: :post) do %> 
    <% @roles.each do |role| %> 
     <li> 
     <%= check_box_tag 'blah_ids[]', role.id -%> 
     <%= h role.name -%> 
     </li> 
    <% end %> 
    <%= submit_tag %> 
<% end %>