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,至少我听说过)。

4

2 回答 2

3

因此,对于所有使用 Rails 3.1 的人来说,这就是解决方案。

<%= javascript_include_tag "application" %>

使用“应用程序”而不是 :defaults 解决了这个问题,删除和确认应该可以工作,现在回到编码!

特别感谢George Shawhttps://stackoverflow.com/a/8350158/1127011上的回答。

如果您想知道,标题仅用于鼠标悬停。

于 2012-01-04T22:29:53.140 回答
0

a HTML 标记将始终触发 GET 方法。Rails 使用 Javascript 驱动程序来替换 HTTP 动词。在以下情况下,link_to 方法将回退任何方法(发布、放置和删除)以获取(对应于显示操作):

  • Javascript 已被用户禁用
  • 出于某种原因,Rails 不显眼的 javascript 驱动程序没有正确处理链接

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

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

您可以尝试使用 button_to 而不是 link_to,它会创建一个表单,允许在未启用 Javascript 的情况下使用 put、post 和 delete 方法。

于 2012-01-04T17:18:57.460 回答