【问题标题】:Rails 3.1 link_to not showing confirmation or destroying properlyRails 3.1 link_to 未显示确认或正确销毁
【发布时间】:2012-01-04 12:00:18
【问题描述】:

我一直在阅读 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,至少我听说过)。

【问题讨论】:

    标签: ruby-on-rails-3.1 railstutorial.org link-to


    【解决方案1】:

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

    <%= javascript_include_tag "application" %>
    

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

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

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

    【讨论】:

      【解决方案2】:

      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 方法。

      【讨论】:

      • 奇怪的是,当我使用 button_to 时,它确实允许我删除(耶),但仍然没有提供确认窗口(嘘)所以它仍然无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多