如何在Rails 3.2索引页面中为每一行添加一个复选框?

我们想在Rails索引页面的每一行添加一个复选框来标记该行。 此复选框不是对象的一部分(数据库中没有复选框布尔值)。 当索引页面显示时,用户可以选中该框以在以下过程中触发该行的事件:

#objects/checkbox_index.html.erb 
CheckBox Object Name Object ID

在控制器中,过程将如下所示:

 @objects.each do |obj| some_event if obj.checked end 

有几个问题我们不太明白:

 1. How to declare an array checkbox variable on the form and link it to each row of obj? We have been using `attr_accessor` to declare var for a form. 2. How to retrieve each row on checkbox_index form and pass them back to controller? We are using simple_form for new/edit. 

任何人都可以指出我对这种行为的任何好例子,或建议我们应该考虑什么? 非常感谢。

对此的一个解决方案是将Javascript事件侦听器添加到不是表单的一部分的复选框。 如果要触发的操作是数据库调用,则可以使用ajax执行此操作。 没有坐下来编写所有的javascript代码,Ruby和伪javascript代码可能看起来像这样:

ruby

 <% @objects.each do |obj| %> <%= check_box_tag, class: "checkbox" %> <% end %> 

使用Javascript / JQuery的

 $('#checkbox').on change { if selected == selected do what you are trying to do on $(this).element (like an ajax call) else undo what you did end } 

为了识别每个复选框,您应该使用<%= check_box_tag“object_ids []”,object.id%> ,它将返回您的控制器和数组,其中包含您提交的所有对象的ID,请查看此video的Ryan Bates这是我学习这种技术的地方, 问候

如果你需要的只是获取信息/效果的方法,那么点击一个复选框,那么这可能会有所帮助。

JS:

 $('yourTableHere').on('click', 'input', function(){ $(this).parentsUntil('tr').toggleClass('active'); // any functionality can go here }); 

演示小提琴