0

remote => true我一直在表单上使用导轨。在 jquery 中,我使用'ajax:before'and'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' 响应。我对这一切是如何运作的感到有点困惑。

谢谢!

4

2 回答 2

1

你能缩小你的问题提供代码吗?

在上面,'ajax:before' 应该是'ajax:beforeSend'。

在您的控制器中,您可以使用类似的东西测试请求是否是 ajax

if request.xhr?
  render nothing: true
else
  redirect_to @your_object
end

您应该将格式添加到远程链接,以确保控制器知道要回答什么

:'data-type' => 'html'
于 2013-03-13T16:48:09.907 回答
0

我认为您可能需要在 url 中指定格式 json。

例如

<%= link_to some_path(format: :json, remote: true) %>
于 2013-03-13T16:46:22.200 回答