我正在运行最新的 Rails 2-3-stable 分支(当前为 2.3.3)。
我正在使用 JQuery 将 AJAX 请求发布到我的“创建”操作,其中有以下块:
respond_to do |format|
format.js
end
我创造了create.js.erb
为了测试此操作,我添加了以下一行:
alert('hello');
请求正确进入 format.js 块,但响应尝试渲染布局。这是我的日志:
Jul 22 20:44:27 [2970] INFO: Rendering template within layouts/application
Jul 22 20:44:27 [2970] INFO: Rendering contacts/create
如果我改变我的respond_to
阻止以下内容,它可以工作:
respond_to do |format|
format.js { render :layout => false }
end
这是预期的行为还是 Rails 中的错误?我本以为我正在渲染 JS 响应这一事实足以将布局设置为 false。
我用这个:
class ApplicationController < ActionController::Base
# this is needed to prevent XHR request form using layouts
before_filter proc { |controller| (controller.action_has_layout = false) if controller.request.xhr? }
它的作用就像魅力一样。您只需将这一衬垫放在一个地方,仅此而已。
我花了大约 1 个小时来写这行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)