在Ruby on Rails中自适应地渲染视图

时间:2011-10-10 20:52:33

标签: ruby-on-rails

在RoR应用程序中,我拥有所有部分视图和单个布局页面。如果请求是ajax,我想只返回部分呈现的html,否则我想返回完全呈现的html页面。

在RoR中执行此操作的最有效方法是什么?我更愿意在应用程序级别而不是在每个控制器操作中执行此操作。

2 个答案:

答案 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来做同样的事情吗?