我有一个Rails应用程序,不幸的是,我的确认对话框没有按预期工作。这是模板代码段:
<%= button_to user_path, data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-danger' do %>
<%= fa_icon 'trash-o', text: 'Delete' %>
<% end %>
生成的HTML如下所示:
<form class="button_to" method="post" action="/users/name">
<div>
<input type="hidden" value="delete" name="_method">
<button class="btn btn-danger" type="submit" data-confirm="Are you sure?">
<i class="fa fa-trash-o"></i>
Delete
</button>
<input type="hidden" value="LSb8IIBGyQ+mB080WDdpEb16RYFJ26DTYbfMs8gc/F8=" name="authenticity_token">
</div>
</form>
现在,当我单击“删除”按钮时,将创建一个确认对话框。当我单击“确定”时,它会显示在日志中:
Started GET "/users/name" for 127.0.0.1 at 2014-08-21 14:53:02 +0200
Processing by UsersController#show as JS
Parameters: {"id"=>"name"}
该请求返回HTTP 200,然后生成另一个对话框。在该对话框上单击“确定”后,没有任何反应,只是省略了对话框,并且没有发送删除请求。
由于已经存在几个与此类似的问题,这是我尝试过的问题:
这里的UsersController代码: https://gist.github.com/sonOfRa/3f7638e321a22f243ce9
答案 0 :(得分:1)
您生成的HTML不包含data-method = delete
。你的HTML应该是
<button class="btn btn-danger" type="submit" data-confirm="Are you sure?" data-method="delete">
<i class="fa fa-trash-o"></i>
Delete
在您的代码中尝试使用以下内容:
<%= button_to user_path, method: :delete, data: {confirm: 'Are you sure?'}, class: 'btn btn-danger' do %>
<%= fa_icon 'trash-o', text: 'Delete' %>
<% end %>
第二个参数应该是这里的方法类型。希望这会有所帮助。
答案 1 :(得分:1)
我原先在这里接受了答案,但是它的海报删除了它。所以记录:
在这种情况下,应使用link_to
,而不是button_to
<%= link_to user_path, method: :delete, data: {confirm: 'Are you sure?'}, class: 'btn btn-danger' do %>
<%= fa_icon 'trash-o', text: 'Delete' %>
<% end %>
答案 2 :(得分:1)
可能是jquery-ujs的问题... FYI
数据确认处理程序被应用两次 https://github.com/rails/jquery-ujs/issues/384