我一直在表单上使用rails remote => true
。在jquery中,我使用'ajax:before'
和'ajax:success'
来获取页面上的事件,并在控制器中执行以下操作来响应ajax或html调用:
format.html{
redirect_to xxxx_path
}
format.json {
render :json => { :something => true }
}
然而,我似乎有很多问题,在链接上放置远程真。
当我在一个链接上设置为remote true时,如果我执行formal.json (如下),控制器将响应它,没有任何get被触发:
format.json {
render :json => { :something => true }
}
如果我这样做了:
format.js{ }
…在控制器中,jquery中有一个响应。但是,不调用'ajax:success'
事件,只调用'ajax:complete'
,这是不正确的。
我想知道如何在Rails3中设置一个远程链接,如果链接是远程的或者只是一个普通的html调用,我可以在控制器中以不同的方式进行响应。所以对远程链接用json响应,对普通链接用html响应。如何让jquery获得'ajax:success‘响应?我对它是如何工作的有点困惑。
谢谢!
发布于 2013-03-14 00:48:10
你能缩小你的问题范围,提供代码吗?
在上面的代码中,‘ajax: the’应该是'ajax:beforeSend‘。
在您的控制器中,您可以使用以下内容测试请求是否为ajax
if request.xhr?
render nothing: true
else
redirect_to @your_object
end
您应该将格式添加到您的远程链接,以确保控制器知道要回答什么
:'data-type' => 'html'
发布于 2013-03-14 00:46:22
我认为您可能需要在url中指定json格式。
例如:
<%= link_to some_path(format: :json, remote: true) %>
https://stackoverflow.com/questions/15389092
复制相似问题