2012-11-20 28 views
2

我想知道如何将当前的high_voltage页面名称作为我的<body>的类别回显出来?如何将当前high_voltage页面名称添加为主体类?

我目前的解决方案是有点麻烦:

# app/views/layouts/application.html.erb 
<body class="<%= yield :body_class %>"> 

# app/views/pages/principles.html.erb 
<% content_for :body_class do %>home<% end %> 

任何帮助将不胜感激。

回答

4

您可以创建一个视图助手将返回一个字符串控制器的名称,作用,ID等

module ApplicationHelper 
    def body_class 
    "#{controller_name} #{controller_name}-#{controller.action_name} #{page_id}" 
    end 

    def controller_name 
    controller.controller_path.gsub('/','-') 
    end 

    def page_id 
    params['id'] 
    end 
end 
0

@harlow 很好的解决方案,但我觉得它暴露给有关的胆量多的信息我的Rails应用程序(即使用'high_voltage')。

此外,我不需要params['id']以外的包含在正文或在我的情况下html-tag的类的“high_voltage”页面的上下文。

我用这一个:

module ApplicationHelper 
    def html_class 
    "#{controller.controller_name} #{controller.action_name} #{page_id}" 
    end 

    def page_id 
    return params['id'].gsub('/','-') if controller.controller_name == 'pages' 
    return nil 
    end 
end 
+0

不错的尝试的简单性和较少的代码行,但是,这将引发一个错误,说'未定义的方法“GSUB”的零:当我在非高压NilClass'页。 @ harlow的解决方案虽然工作。 – mcometa

相关问题