我正在制作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 .
在我的应用程序的早期,我遇到了类似的问题,即在同一个应用程序中删除我的“space”实体,以及其他类似的JS问题,所以一定是这样。
顺便说一下,这是在Rails 4上的
答案 0 :(得分:0)
Rails Unobtrusive Javascript驱动程序(UJS) - data-method
默认情况下使用_method
链接上的拦截点击并发送一个AJAX请求,该请求可以发送正确的HTTP方法,也可以在客户端执行时伪造它通过发送带有特殊{{1}}参数的POST请求,不支持特定动词。
这是因为HTML仅支持链接和GET|POST
for forms的GET操作。
您很可能在使用javascript时出现问题,例如语法错误导致UJS驱动程序无法正常工作。在浏览器中打开控制台。
答案 1 :(得分:0)
我在这里查看了所有评论。所有包含都设置正确。但是我注意到删除文章不起作用,删除评论会起作用。在重写了一些代码并在这里和那里进行检查之后,我发现在编辑器中看起来相同的两个文件,但是一个版本可以工作而另一个版本不起作用!
咖喱博客/应用/视图/物品/ 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
的文件,我发现在一个版本中只有使用的标签,而另一个版本也使用了空格。可能是从教程中复制粘贴代码。因此,用制表符替换空格可以解决问题。