我一直在表单上使用rails remote => true
。在jquery中,我使用'ajax:before'
和'ajax:success'
来获取页面上的事件,并在控制器中执行以下操作来响应ajax或html调用:
format.html{
redirect_to xxxx_path
}
format.json {
render :json => { :something => true }
}
然而,我似乎在将远程true放在链接上时遇到很多问题。
当我将remote true放在一个链接上时,如果我执行formal.json(下面),在控制器中响应它就没有触发任何内容:
format.json {
render :json => { :something => true }
}
如果我这样做:
format.js{ }
...在控制器中,jquery中有一个响应。但是,未调用'ajax:success'
事件,仅调用'ajax:complete'
,这是不正确的。
我想知道如何在rails 3中设置远程链接,如果链接是远程的或者只是普通的html调用,我可以在控制器中以不同的方式响应。所以用json响应远程链接和html用于普通链接。我如何让jquery获得'ajax:success'响应。我对它的运作方式感到有点困惑。
谢谢!
答案 0 :(得分:1)
你能否缩小你的问题提供代码?
在上文中,'ajax:before'应为'ajax:beforeSend'。
在您的控制器中,您可以使用
等测试请求是否为ajaxif request.xhr?
render nothing: true
else
redirect_to @your_object
end
您应该将格式添加到远程链接以确保控制器知道要回答的内容
:'data-type' => 'html'
答案 1 :(得分:0)
我认为您需要在url中指定json格式。
e.g。
<%= link_to some_path(format: :json, remote: true) %>