【问题标题】:Destroy link in Rails 3.2 shows the data instead of deleting itRails 3.2 中的 Destroy 链接显示数据而不是删除它
【发布时间】:2013-05-05 17:56:28
【问题描述】:

我创建了一个新的脚手架rails generate scaffold scores score:integer route_id:integer 并运行了rake db:migrate

这很好用,但是当我去分数页面删除一些数据时,删除链接会以某种方式显示视图详细信息,但不会删除它。我还将链接与其他一些项目进行了比较,它看起来几乎相同,只是这次它不起作用。

这就是我的 index.html.erb 页面中的内容:

<td><%= link_to 'Destroy', score, method: :delete, data: { confirm: 'Are you sure?' } %></td>

我在这个网站上的一些帖子中发现 gem 文件需要包含 gem 'jquery-rails',所以我检查了一下,它就在那里。我也再次运行bundle install,但没有变化。 从link_tobutton_to 的更改也没有帮助。

有人知道它还能是什么吗?如果您需要更多详细信息,请告诉我,我很乐意添加。

非常感谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 scaffolding destroy


    【解决方案1】:

    有时会发生这种情况,因为您没有在应用程序中包含 jquery_ujs。打开浏览器控制台并检查是否包含 jquery_ujs 或是否包含多次。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,只有在我将 jquery 和 jquery_ujs 添加到我的页面后,我才设法解决它:

      <%= javascript_include_tag "jquery" %>
      <%= javascript_include_tag "jquery_ujs" %>
      <%= javascript_include_tag "application" %>
      

      我很可能对资产管道有问题,因为我在 application.js 中请求了它们,但是当页面上没有明确请求它们时它不起作用。 在我的 application.js 中,我有:

      //= require_jquery
      //= require_jquery_ujs
      //= require_tree .
      

      【讨论】:

        【解决方案3】:

        我猜method: :delete 正在被覆盖或忽略,因为您提供了资源。你能试试这个吗?

        <td><%= link_to 'Destroy', destroy_score_path(score), data: { confirm: 'Are you sure?' } %></td>
        

        这是link_to 的文档供参考: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

        【讨论】:

        • 感谢您的快速回复。我试过了,但它给了我以下错误:undefined method destroy_score_path' for #:0x947ce90>`
        • 我也猜它会被其他一些函数覆盖。问题是靠什么?一开始它是有效的,但后来我做了很多事情,以至于很难回忆。
        • 快速猜测:试试destroy_scores_path(复数)。您可能升级了 rails 版本并且行为发生了变化。根据此方法的 api 文档,这只是一个版本,其中可以将主体指定为第一个参数,并且可以将 url(或可能是模型)指定为第二个参数:link_to(body, url, html_options = {}) .在这种情况下,第三个参数是 html_options。我会考虑 method: :delete 一个 url_option。这就是为什么我认为它可能被忽略了。能否请您发布您的routes.rb 和上面一行生成的源代码?
        【解决方案4】:

        简单。 您需要在 application.html.erb 中包含 jquery_ujs,也称为 rails.js。 我以前有这个问题。 Rails 需要 rails.js 才能做到这一点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-20
          • 2012-02-08
          • 1970-01-01
          相关资源
          最近更新 更多