有点困惑如何回应铁路3的远程link_to的...

时间:2013-03-13 15:09:42

标签: jquery ruby-on-rails ajax jquery-ui response

我一直在表单上使用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'响应。我对它的运作方式感到有点困惑。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

在上文中,'ajax:before'应为'ajax:beforeSend'。

在您的控制器中,您可以使用

等测试请求是否为ajax
if 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) %>