如何在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 });
演示小提琴