2

我想知道如何将当前的 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 %>

任何帮助将不胜感激。

4

2 回答 2

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
于 2012-11-20T02:12:32.257 回答
0

@harlow 不错的解决方案,尽管我发现它暴露了很多关于我的 Rails 应用程序内部的信息(即“高电压”的使用)。

此外,对于 body 或在我的情况下为 html-tag,我不需要params['id']包含在类中的“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
于 2013-02-17T21:45:47.423 回答