Ruby on Rails:使用 button_to 增加脚手架中对象的价值

Ruby on Rails: Increase value of object in scaffold with button_to

我有一个脚手架,可以生成 table 支篮球队。我想在 table 中实现一个按钮来增加团队的获胜次数,另一个按钮用于 losses.By 默认值,两者在控制器中都设置为 0。我应该在控制器或视图(add_wins 和 add_losses)中实现方法吗?如果是这样,它会是什么样子?谢谢你。 这是视图中 table 正文的代码:

<tbody>
<% @teams.each do |team| %>
  <tr>
    <td><%= team.Name %></td>
    <td><%= team.Color %></td>
    <td><%= team.Players %></td>
    <td><%= team.Wins %></td>
    <td style="font-size: 20px"><%= button_to '+', method: :add_wins %></td> <!-- The method add_wins doesn't exist. -->
    <td><%= team.Losses %></td>
    <td style="font-size: 20px"><%= button_to '+',method: :add_losses %></td> <!-- The method add_losses doesn't exist. -->
    <td><%= link_to 'Show', team %></td>
    <td><%= link_to 'Edit', edit_team_path(team) %></td>
    <td><%= link_to 'Delete', team, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

不是完全复制粘贴的答案,但我会尝试解释基础知识,希望您能自己找出完整的解决方案。

首先,我建议您不要实施单独的 add_winsadd_losses 方法,如下所示:

  1. 你的控制器太混乱了
  2. 不要把连接issues/reloading处理得太好(想想如果你有0损失,点击add,渲染响应出问题了,计数器已经更新到1,但用户返回到上一页,再次看到 0 并再次点击 add,您最终会到达 2 而不是 1 .

相反,坚持使用适当参数的标准 update 操作。

Herebutton_to 的文档,您必须设置适当的 methodparams。您的 params 需要包含下一个输或赢的值以及团队 ID。此外,您可能希望验证是否有人试图发送一些任意的输赢值。您要使用的 methodput.