Rails使用AJAX请求响应不同的格式

时间:2015-08-01 00:54:09

标签: javascript ruby-on-rails ajax

我试图了解Rails中的AJAX请求。我有一个目前使用remote提交的表单:true。如果请求成功,我想使用HTML重定向进行响应,如果不成功,则使用Javascript运行错误消息。但是,无论结果如何,请求似乎都希望返回.html。

respond_to do |format|
  if conversation
    format.html { redirect_to(conversation_path(conversation)) }
  else
    format.js
  end
end

在我在AJAX上保存对话调用后调用此方法。成功保存后,路径HTML将被正确发回,但不会在客户端上呈现。但是在不成功的保存中,它期望.html并抛出错误。我如何接受.js作为回应?我的目标是在呼叫失败时弹出错误,并在成功呼叫时重新发送redirect_to。

编辑:我的form_for:

<%= form_for :conversation, url: :conversations, remote: true, html: { class: "conversation-form" } do |f| %>

1 个答案:

答案 0 :(得分:0)

以下是您的最终目标的建议替代方案 - 在控制器中,将transition: all 2s ease;条目放在format.html区块中。另外,将respond_to设置为视图模板可以访问的实例变量:

conversation

然后,将重定向逻辑放在javascript视图模板中(对于上面的示例:class YourController < ActionController::Base def your_action # awesome code doing stuff with a conversation object goes here @conversation = conversation respond_to do |format| format.js # your_action.js.erb end end end ):

app/views/.../your_action.js.erb

希望这有帮助!