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

时间:2011-05-27 21:24:46

标签: ruby-on-rails ajax ruby-on-rails-3

我正在测试创建一个link_to:remote =>如果获得ajax远程链接处理,则为true。

<%= link_to "Get Books", "/books", :remote=> true %>

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

<a href="/books" data-remote="true">Get Books</a>

我有默认的javascript:

<%= javascript_include_tag :defaults %>

源头解析为:

<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>

在控制器中我有:

respond_to :html, :json

但是当我点击链接时,它会作为常规链接加载,而不是ajax并且在服务器日志中加载:

  

BooksController #index处理为HTML

我错过了什么?

2 个答案:

答案 0 :(得分:8)

确保您已安装jQuery UJS Plugin

将此添加到您的gemfile:

gem 'jquery-rails', '>= 1.0.3'

然后运行:

bundle install
rails g jquery:install

答案 1 :(得分:3)

我遇到了类似的问题:我希望将远程链接作为JS请求进行处理,但是Rails会以某种方式将其作为HTML进行处理。

问题是我们没有指定格式,然后Rails可以选择任何格式,具体取决于服务器配置。

TL; DR; 使用远程时指定请求类型:

<%= link_to "Get Books", "/books", data: {remote: true, type: "script"} %>