Rails 3.1中的link_to无法正确显示确认或删除操作

4
我一直在railstutorial.org上努力阅读章节,并使用Rails 3.1.3,因为我很疯狂和/或想要挑战自己。我成功地解决了大多数版本问题,但这个问题困扰了我一段时间。
在10.4.2中,Michael Hartl使用以下代码删除用户:
<%= link_to "delete", user, :method => :delete, :confirm => "You sure?", 
                            :title => "Delete #{user.name}" %>

如果您在浏览器(chrome)中测试它,它无法正常工作,而是会将您发送到该用户页面。

如果您包含以下内容,则应该可以正常工作:

<%= javascript_include_tag :defaults %>

但是它在Rails 3.1中失败了(尽管我听说它应该适用于Rails 3.0)。

2个回答

3

如果您在使用Rails 3.1时感到困惑,那么这里提供解决方案。

<%= javascript_include_tag "application" %>

使用"application"代替:defaults可以解决这个问题,删除和确认应该可以正常工作,现在回到编程!

特别感谢George Shawhttps://dev59.com/uVDTa4cB1Zd3GeqPK6e0#8350158上的答案。

如果你想知道,title只是用于鼠标悬停。


0

a HTML 标记将永远触发 GET 方法。Rails 使用 Javascript 驱动程序来替换 HTTP 动词。当满足以下条件之一时,link_to 方法会将任何方法(post、put 和 delete)回退为 get(对应 show 操作):

  • 用户已禁用了 Javascript
  • 由于某种原因,Rails 不明显的 javascript 驱动程序未能正确处理链接

请参见 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html

我怀疑第二个原因是问题所在。请确保包含 jquery.js、application.js、jquery_ujs.js 文件。

您可以尝试使用 button_to,它创建一个表单,允许启用 put、post 和 delete 方法而不需要启用 Javascript。


有趣的是,当我使用button_to时,它确实允许我删除(耶),但仍然没有提供确认窗口(糟),所以它仍然没有正常工作。 - flipside

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接