繁体   English   中英

使用:method => link_to:通过GET而不是DELETE rails删除路由4

[英]link_to with :method => :delete routing through GET not DELETE rails 4

我正在制作Ruby on Rails应用程序,遇到了一个问题,我认为这与我的应用程序中的Javascript无法正常工作有关。

我遇到的特定问题是link_to:

<%= link_to 'Sign out', destroy_user_session_path, :method => :delete %>

如您所见,这是相当标准的。

我在控制台中得到了这个:

Started GET "/user/sign_out" for ::1 at 2015-06-02

我认为这可能与bootstrap和我的application.js文件有关,但是我在网上找到的任何解决方案都没有帮助。

这是我的application.js文件:

//= require bootstrap-sprockets
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

在我的应用程序的早期,我在删除同一应用程序中的“空格”实体时遇到了类似的问题,而其他类似的JS问题也是如此。

顺便说一下,这是在Rails 4上

Rails入门Javascript驱动程序(UJS)-默认情况下, jquery-rails使用带有data-method链接的拦截点击并发送AJAX请求,该请求发送正确的HTTP方法,或者在客户端不支持通过发送特定动词时伪造该方法具有特殊_method参数的POST请求。

这是因为HTML仅支持链接的GET操作和表单的GET|POST

您最有可能遇到JavaScript问题,例如语法错误,这会阻止UJS驱动程序执行其工作。 在浏览器中打开控制台。

检查空格。

我在这里检查了所有评论。 所有包含项均已正确设置。 但是我注意到,删除文章不起作用,而删除评论则可以。 重写一些代码并在此处进行检查后,我发现两个文件在编辑器中看起来完全相同,但是一个版本可以工作,而一个版本不能工作!

咖喱博客/应用/视图/用品/ index.html.erb:

<h1>Listing Articles</h1>
<%= link_to 'New article', new_article_path %>
<table>
  <tr>
    <th>Title</th>
    <th>Text</th>
    <th colspan="3"></th>
  </tr>
 
  <% @articles.each do |article| %>
    <tr>
      <td><%= article.title %></td>
      <td><%= article.text %></td>
      <td><%= link_to 'Show', article_path(article) %></td>
      <td><%= link_to 'Edit', edit_article_path(article) %></td>
      <td><%= link_to 'Delete', article_path(article),
              method: :delete,
              data: { confirm: 'Are you sure?' } %></td>        
    </tr>
  <% end %>
</table>

但是,通过xxdiff查看文件,我发现在一个版本中,仅使用制表符,而另一个版本中也使用空格。 可能是来自教程中的复制粘贴代码。 因此,用制表符代替空白确实可以解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM