与data-remote ="true"的链接不作为JSON处理

Str*_*ine 6 ajax ruby-on-rails ruby-on-rails-3

我正在测试创建一个link_to:remote => true来获取ajax远程链接处理.

<%= link_to "Get Books", "/books", :remote=> true %>
Run Code Online (Sandbox Code Playgroud)

rails3的帮助程序在视图中正确解析代码,我得到源代码:

<a href="/books" data-remote="true">Get Books</a>
Run Code Online (Sandbox Code Playgroud)

我有默认的JavaScript包括:

<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)

源头解析为:

<script src="/javascripts/jquery.js?1302296105" type="text/javascript"></script>
<script src="/javascripts/rails.js?1302139751" type="text/javascript"></script>
<script src="/javascripts/application.js?1305999509" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

在控制器中我有:

respond_to :html, :json
Run Code Online (Sandbox Code Playgroud)

但是,当我单击链接时,它将作为常规链接加载,而不是ajax和服务器日志:

由BooksController处理#index为HTML

我错过了什么?

Dyl*_*kow 8

确保您已安装jQuery UJS插件:

将其添加到您的gemfile:

gem 'jquery-rails', '>= 1.0.3'
Run Code Online (Sandbox Code Playgroud)

然后运行:

bundle install
rails g jquery:install
Run Code Online (Sandbox Code Playgroud)

  • 谢谢! - 那当然是个问题.我还必须运行"rails generate jquery:install"并在config/application.rb中注释掉之前添加的"config.action_view.javascript_expansions [:defaults] =%w(jquery rails)" - 我想我可以手动更改它包括jquery_ujs但注释掉该行似乎回退到正确的默认"默认值".一切正常! (2认同)