1

我正在将我们的 Rails 3 Web 应用程序转换为使用 jQuery 移动,但我遇到了“远程”链接问题。

我有以下链接:

= link_to "Text", foo_url, :method => :put, :remote => true

在服务器上,我正在处理这样的事情:

respond_to do |format|
  if foo.save
    format.html { redirect_back_or_to blah_url }
    format.json { render :json => {:status => "ok"} }
  end
end

这曾经非常有效。然而,由于我添加了 jQuery Mobile,控制器代码通过“html”分支而不是“json”分支,并以重定向响应。

我试过添加

 :data => { :ajax => "false" }

到链接,但我得到相同的效果。

在 jQuery Mobile 之前,UJS 发送带有以下接受头的请求:

Accept:application/json, text/javascript, */*; q=0.01

在使用 jQuery Mobile 时,我得到了这个标题:

Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript

我相信标头的这种变化是服务器端行为变化的罪魁祸首。我无法通过客户端进行调试以确定谁在做什么。UJS 显然仍在做某事,因为我收到了各种各样的“PUT 请求”,事情得到了适当的路由,等等,但我不确定是什么改变了标题。

谢谢!
丹尼尔

4

1 回答 1

0

默认情况下remote: true转到format.js子句(并搜索一些 .js.erb 模板以发送回),并默认format.html发送回 html 模板。

如果要返回 json,则应”data-type” => :json在调用中使用,例如:link_to

<%= link_to 'Show Full Article', @article, :remote => true, "data-type" => :json %>

资料来源:http ://tech.thereq.com/post/17243732577/rails-3-using-link-to-remote-true-with-jquery-ujs

于 2014-11-17T20:06:47.407 回答