渲染页面更灵活

时间:2015-02-04 10:21:54

标签: ruby-on-rails

在我当前的项目中,假设需要很多不同的UI。

离>将有两个客户,boogle和yumhoo,这两个客户想要完全不同的观点。

我做了这样的原型,

class HomeController < ApplicationController
  after_action :render_ui
  def index
  end

  def render_ui
    render "#{self.controller_name}/#{ENV['CLIENT_UI']}/#{self.action_name}"
  end
end

我的计划是动态生成视图文件的路径,

但这里有一个大问题,

众所周知,rails会自动运行,

render 'there own contoller and action name combination'

并抛出错误,

Render and/or redirect were called multiple times in this action

导轨中有skip the default automatic render feature的方法吗?

1 个答案:

答案 0 :(得分:2)

视图已经渲染时调用

after_action。如果要渲染特定文件,只需在操作本身中调用render即可。

class HomeController < ApplicationController
  def index
    render "#{self.controller_name}/#{ENV['CLIENT_UI']}/#{self.action_name}"
  end
end

您可能还需要考虑使用Rails 4.1 template variants功能。