我希望创建一个类似的报告,每行旁边都有一个复选框。每行都有一些可编辑的字段(例如注释)。我想要的是通过选择该行旁边的复选框,让用户能够检查他/她想要更新的行。然后我在表单底部有一个保存按钮,它只更新旁边有一个活动复选框的行。
我对rails和网络编程一般都很陌生,所以你可能给我的任何建议/方向都应该证明是有帮助的。
答案 0 :(得分:2)
实现这一目标的一种流行方式是:
1-所有复选框都应该共享相同的名称。
2-所有复选框的值都应该是行/对象的ID
3-当您发布表单时,只有选中的复选框位于POST数据中。检索这些IDS并仅更新这些对象。
例如,您的复选框应类似于:
<%= check_box_tag "row_ids[]", row.id, false, :id => "row_#{row.id}" %>
然后,在你的控制器中:
Row.find(params[:row_ids]).each do |row|
# do whatever you want
end
答案 1 :(得分:1)
嗯,你可以做到这一点,但它为用户增加了更多的工作:他们必须在点击更新之前勾选多个复选框。如果他们只是点击更新它就更好了。
基本思路是您希望用户只需单击“更新”,您的代码只会更新已更改的记录。
您可以做的是存储(在隐藏字段标记中)每行记录的ID。然后,当您更新时,循环遍历所有行,并从数据库中获取(基于存储在隐藏字段中的ID)记录。我们只说评论是可编辑的。然后你可以检查评论是否实际上已被更改(比如简单的字符串比较),如果有,则更新它。如果有更多内容可以编辑,那么您也可以在决定是否需要更新之前检查它们。
这是一个高级别的描述,但是如果您想要更多实现细节,请告诉我。