使用复选框更新数据库 - rails

时间:2016-10-11 16:22:43

标签: ruby-on-rails checkbox

所以我有一个与活动和活动相关联的用户模型与已完成的模型相关联?

我想要做的是在点击复选框时完成活动的更新。

以下是我的观点:

  <% @user.completeds.each do |task| %>
    <tr>
      <td><%= task.activity.name %></td>
      <td><%= task.activity.type.name %></td>
      <td><%= task.activity.points %></td>

      <td><%= check_box_tag 'finished', '1', task.finished %></td>
    </tr>
<% end %>

这一切都很有效,并显示活动是否已完成&#34;但我很难弄清楚如何使用复选框更新数据库。虽然我希望它在您点击复选框时更新,但我可以使用保存按钮立即保存它们。哪个更容易对我来说最好,因为我只是在学铁路。

感谢您的帮助。

修改

为了澄清我的问题,上面的代码用于正确显示数据,我无法弄清楚如何将其转换为表单,以便我可以保存对复选框值的任何更改。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用表单和保存按钮。如果查看Form Helpers Rails Guide,您可以看到一个示例:

<%= check_box_tag(:pet_dog) %>
<%= label_tag(:pet_dog, "I own a dog") %>

您可能希望使用form_for,而不是form_tag来更新您的对象。请参阅文档here

<%= form_for task do |f| %>
  <%= f.label :finished %>:
  <%= f.check_box :finished %><br />
  <%= f.submit %>
<% end %>

编辑: 要更新倍数,请尝试以下方法:

<% form_tag edit_multiple_products_path do %>
<table>
  <tbody>
    <% @user.completeds.each do |task| %>
      <tr>
        <td><%= task.activity.name %></td>
        <td><%= task.activity.type.name %></td>
        <td><%= task.activity.points %></td>
        <td><%= check_box_tag 'finished', '1', task.finished %></td>
      </tr>
    <% end %>
  </tbody>
</table>
<%= submit_tag "Update Tasks" %>
<% end %>

除了不要忘记执行RailsCast提及的所有其他操作。