Rails生产中删除链接的获取(显示)请求

时间:2018-07-27 12:09:10

标签: ruby-on-rails

在开发模式下运行Rails时,我单击这样的删除链接:

<%= link_to "Delete", scenario_path(@scenario), method: :delete %>

它将按预期删除记录。

但是,当我在生产环境中运行相同的代码时,它会向显示页面发出请求,并且不会删除记录。

可能是什么原因造成的?

1 个答案:

答案 0 :(得分:1)

按下链接时,Rails使用rails-ujs向服务器提交表单。这是因为链接始终是GET请求,而rails则需要DELETE请求才能删除记录。

因此,如果您从//= require rails-ujs中删除了application.js,它将不会加载,并且请求将是GET而不是DELETE。或者在旧版的Rails //= require jquery_ujs

这就是引起我问题的原因。因此,当我添加rails-ujs时,它又开始工作了。您可以通过在应用程序上禁用JS来确认这一点,并且您会发现DELETE请求不再起作用。添加rails-ujs的另一种方法是使用表单按钮而不是链接,如下所述:https://www.viget.com/articles/delete-in-rails-without-jquery-and-ujs/

<%= button_to "Delete", post_comment_path(@post, comment), method: :delete %>