Rails重复确认对话框

时间:2014-08-21 13:27:17

标签: javascript jquery ruby-on-rails

我有一个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,然后生成另一个对话框。在该对话框上单击“确定”后,没有任何反应,只是省略了对话框,并且没有发送删除请求。

由于已经存在几个与此类似的问题,这是我尝试过的问题:

  1. 寻找多个javascript_include_tags。事实并非如此。
  2. 寻找javascript代码的多个包含。情况并非如此,只有jquery和jquery_ujs在我的application.js中。
  3. 关闭turbolinks。这没有用。
  4. 使用其他浏览器(尝试使用Chrome 36.0.1985.143和Firefox 31.0)
  5. 这里的UsersController代码: https://gist.github.com/sonOfRa/3f7638e321a22f243ce9

3 个答案:

答案 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