我正在测试创建一个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
我错过了什么?
答案 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"} %>