我正在列出促销列表,其中每个促销活动都应删除。在视图中,对于每个促销活动,我制作了一个按钮_TO按钮,该按钮应在单击控制器时在控制器中运行删除操作。但是,除了第一个按钮以外的所有按钮都可以正常工作。换句话说,第一个按钮不起作用。
在促销控制器中
def delete
flash[:success] = 'Your promotion has been successfully deleted!'
redirect_to('/promotions')
end
在促销视图中
<% @promotions.each do |p| %>
<tr>
<td>
.
.
.
.
</td>
<td> <%= button_to "Delete" , promotions_delete_path(params: {promo_code: p.promo_code }),
method: :post, class: "btn btn-danger btn-xs" %></td>
<% end %>
我真的不明白为什么会发生这种情况。除了第一个按钮,每个按钮都重新加载页面并成功地闪烁。当我尝试使用JavaScript确认它时,也发生了同样的事情 - 除了第一个以外,它将适用于所有人,因此我删除了确认,看看是否有任何变化 - 但是我仍然有这个问题。我还尝试通过控制器删除一些促销活动并测试新的"第一个"按钮 - 促销无关紧要,列表中的第一个按钮不起作用。任何帮助将不胜感激!
事实证明,这与button_to
方法使用表格的事实有关,因此我们在表单内有形式(我没有意识到<%= @promotions.each %>
在内部有相关的形式,所以没有发布它。)将button_to
更改为link_to
,并使用method: post
解决了我的问题。现在所有的"按钮"都可以工作!