我试图了解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| %>
答案 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
希望这有帮助!