如何更新表单的某些部分

时间:2011-12-15 16:30:07

标签: ruby-on-rails ruby-on-rails-3 forms checkbox

我希望创建一个类似的报告,每行旁边都有一个复选框。每行都有一些可编辑的字段(例如注释)。我想要的是通过选择该行旁边的复选框,让用户能够检查他/她想要更新的行。然后我在表单底部有一个保存按钮,它只更新旁边有一个活动复选框的行。

我对rails和网络编程一般都很陌生,所以你可能给我的任何建议/方向都应该证明是有帮助的。

2 个答案:

答案 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)记录。我们只说评论是可编辑的。然后你可以检查评论是否实际上已被更改(比如简单的字符串比较),如果有,则更新它。如果有更多内容可以编辑,那么您也可以在决定是否需要更新之前检查它们。

这是一个高级别的描述,但是如果您想要更多实现细节,请告诉我。

相关问题