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_wins
、add_losses
方法,如下所示:
- 你的控制器太混乱了
- 不要把连接issues/reloading处理得太好(想想如果你有
0
损失,点击add
,渲染响应出问题了,计数器已经更新到1
,但用户返回到上一页,再次看到 0
并再次点击 add
,您最终会到达 2
而不是 1
.
相反,坚持使用适当参数的标准 update
操作。
Here 是 button_to
的文档,您必须设置适当的 method
和 params
。您的 params
需要包含下一个输或赢的值以及团队 ID。此外,您可能希望验证是否有人试图发送一些任意的输赢值。您要使用的 method
是 put
.
我有一个脚手架,可以生成 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_wins
、add_losses
方法,如下所示:
- 你的控制器太混乱了
- 不要把连接issues/reloading处理得太好(想想如果你有
0
损失,点击add
,渲染响应出问题了,计数器已经更新到1
,但用户返回到上一页,再次看到0
并再次点击add
,您最终会到达2
而不是1
.
相反,坚持使用适当参数的标准 update
操作。
Here 是 button_to
的文档,您必须设置适当的 method
和 params
。您的 params
需要包含下一个输或赢的值以及团队 ID。此外,您可能希望验证是否有人试图发送一些任意的输赢值。您要使用的 method
是 put
.