如何将当前的high_voltage页面名称添加为正文类?

时间:2012-11-20 01:51:10

标签: ruby-on-rails gem ruby-on-rails-3.2 helper

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

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

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

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您可以创建一个视图助手,它将返回一个包含控制器名称,操作,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

答案 1 :(得分:0)

@harlow 很好的解决方案,虽然我发现它暴露了很多关于我的Rails应用程序的内容的信息(即'high_voltage'的用法)。

此外,我不需要在身体类别中包含的'high_voltage'页面的上下文之外的params['id'],或者在我的情况下html-tag。

我用这个:

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