在RoR应用程序中,我拥有所有部分视图和单个布局页面。如果请求是ajax,我想只返回部分呈现的html,否则我想返回完全呈现的html页面。
在RoR中执行此操作的最有效方法是什么?我更愿意在应用程序级别而不是在每个控制器操作中执行此操作。
答案 0 :(得分:0)
在您的控制器中:
if request.xhr?
render :update do |page|
page.replace_html 'element_id', :partial => 'partial_for_ajax'
end
end
在你的视图中,只需通过AJAX调用此控制器#action,控制器将用部分内容替换元素'element_id'。
答案 1 :(得分:0)
我不知道它有多常见,但是使用PJAX,即时修改我的应用程序控制器中的render方法:
def render(options = nil, extra_options = {}, &block)
if request.headers['X-PJAX'] == 'true'
options = {} if options.nil?
options[:layout] = false
end
super(options, extra_options, &block)
端
我不确定,但我认为你可以通过检查request.xhr来做同样的事情吗?