【问题标题】:Neither :method => :post and :remote => true is working on my Rails 3.1 app:method => :post 和 :remote => true 都不适用于我的 Rails 3.1 应用程序
【发布时间】:2011-11-06 14:52:15
【问题描述】:

呈现的 HTML 看起来是正确的:

<a href="/foo/add" data-method="post" data-remote="true" rel="nofollow"><img src=/assets/icons/example.png></a>

尽管 data-method 和 data-remote 都被渲染,但当我单击链接时,浏览器似乎发出了 GET,因为 Rails 抱怨缺少路由。我确实希望这是一个 POST,但我继续在 routes.rb 中添加了一个 GET 并且调用有效,但现在是常规调用而不是 AJAX 调用。我似乎在某处遗漏了一些 JS 文件...... Rails 3.1 非常新 - 有人能指出我正确的方向吗?

【问题讨论】:

    标签: javascript ruby-on-rails ajax routes


    【解决方案1】:

    确保您的Gemfile 有这个:

    gem 'jquery-rails'
    

    你的app/views/layouts/application.html.erb 有这个:

    <%= stylesheet_link_tag :application %>
    

    并且您的app/assets/javascripts/application.js 包含以下两行:

    //= require jquery
    //= require jquery_ujs
    

    这些部分都是正确使用 Rails 中的:remote 选项所必需的。

    【讨论】:

    • 感谢您的回复迪伦。我的 gemfile 中确实有该行,布局中确实有该行,并且我的 application.js 有这两行(第三行也是 //= require_tree 。行为没有改变,浏览器仍然执行 GET 而不是 POST即使我将 GET 添加到 routes.rb,那么调用也不是 AJAX 调用。我还缺少什么?
    • 我仔细按照这里的说明进行操作:railscasts.com/episodes/282-upgrading-to-rails-3-1 现在一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    相关资源
    最近更新 更多