Rails用AJAX请求响应不同的格式
Rails responding to different formats with AJAX request
我正在尝试理解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。
编辑:My form_for:<%= form_for :conversation, url: :conversations, remote: true, html: { class: "conversation-form" } do |f| %>
这是您最终目标的建议替代方案-在控制器中,将format.html
条目放入respond_to
块中。另外,将conversation
设置为视图模板可以访问的实例变量:
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
然后,将重定向逻辑放在javascript视图模板中(对于上面的示例:app/views/.../your_action.js.erb
):
<% if @conversation.errors.any? # or whatever condition you want to show a popup for %>
// put your javascript popup code here
alert('Errors happened!');
<% else %>
// this is how you do a redirect using javascript:
window.location.href = "<%= conversation_path( @conversation ) %>";
<% end %>
希望这对你有帮助!
相关文章:
- 将json响应格式化为父级和子级
- 将服务器响应格式化为人类可读
- RSS提要响应不是以原始XML格式提供的
- 响应出现JSON格式问题
- 如何发布到URL并打开一个新窗口以显示pdf格式的响应
- 为什么我的rails应用程序在生产环境中没有正确响应.js格式
- 来自Mongo的JSON格式的无阻塞写入响应
- jQuery ajax 调用 - jim 脚本响应应该是什么格式
- 从 AJAX 命令返回 JSON 格式的响应
- 强制 Chrome 显示格式为树结构的 Json 响应
- JavaScript JSON 响应格式
- 使用 Jquery 解析 Json 格式的 ajax 响应
- 从aspx页面获取json格式的响应,而不是纯html格式
- Javascript自定义函数,用于将JSON格式的YQL查询响应导入谷歌电子表格
- 以HTML格式操作AJAX响应
- JSONP响应格式错误
- 将当前页面数据存储在一个变量中,其格式/结构与Ajax html响应相同
- 响应格式与rails中的请求不同
- 获取XML格式的响应数据
- NODEJS无法发送json格式的响应