如何在视图中使用Checkbox来创建列表

时间:2011-06-09 14:36:11

标签: ruby-on-rails

我希望能够从视图中检查从我的数据库中选择的一些元素,并在我的视图中显示为一个表格。
我的想法是构建一个包含元素ID的列表,并使用此列表打印所有选定元素,因此我尝试使用复选框来选择或不选择表格的每一行。然后我想用 link_to 使用包含我的id列表的参数来调用控制器动作:

<%= link_to 'Printer', :controller => 'MyController', :action => 'MyAction', :element_list => mylistofelement %>

但我没有成功创建mylistofelement

如何在View中构建这样的列表,并且mylistofelement看起来像1,3,6,7,8或者数组......,但我可以将其作为参数用于我的工作控制器动作。

由于

1 个答案:

答案 0 :(得分:0)

OK!所以这是一个解决方案。我在rails 3.1.0rc2 btw。

中这样做了

所以你的观点看起来应该是这样的

<%= form_tag 'display' %>
<% @artists.each do |artist| %>
  <tr>
   <td><%= artist.name %></td>
   <td><%= artist.song %></td>
   <td><%= check_box("display", artist.id) %></td>
  </tr>
<% end %>

<%= submit_tag 'Print' %>

<% end %>

这将在当前控制器中发布到'display'(我将其添加到routes.rb) 您可以在rails服务器日志窗口中检查它是否在params

中发布了我们的值

“display”=&gt; {“1”=&gt;“1”,“2”=&gt;“0”,“3”=&gt;“0”}

“1”=&gt;“1”表示artist.id = 1,并且选中了相应的复选框。 “3”=&gt;“0”artist.id = 3复选框未选中

class ArtistsController < ApplicationController
   def display
      @ids = []
      params[:display].each do |key,val|
         if val != "0"
           @ids << key
         end
      end

      render 'display'
   end

只是我砍掉的东西......希望它有所帮助!