如何从Rails中的布局模板获取当前视图名称?

Evg*_*nii 8 ruby-on-rails-3

是否可以从布局内部获取当前渲染视图的名称?

Pet*_*ich 4

我对 css 命名空间做了类似的事情:

# config/initializers/action_view.rb
ActionView::TemplateRenderer.class_eval do

  def render_template_with_tracking(template, layout_name = nil, locals = {})
    # with this gsub, we convert a file path /folder1/folder2/subfolder/filename.html.erb to subfolder-filename
    @view.instance_variable_set(:@_rendered_template, template.inspect.gsub(/(\..*)/, '').split('/')[-2..-1].join('-'))
    out = render_template_without_tracking(template, layout_name, locals)
    @view.instance_variable_set(:@_rendered_template, nil)
    return out
  end

  alias_method_chain :render_template, :tracking
end


# application.html.erb
<body class="<%= :@_rendered_template %>" >
Run Code Online (Sandbox Code Playgroud)