我需要做的事情非常简单,但是一个优雅的方法就是逃避我,因为我是Rails的菜鸟。基本上,我需要根据当前显示的视图来更改body标签的class属性,该属性位于我的application.html.erb文件中。
因此,在我的索引页面上它将是:
<body class="pull_top">
但是在任何其他页面上(到目前为止),它只是
<body>
我的第一个想法是将此添加到application_helper.rb
def body_class
default_class = ""
if current_page?(controller: 'index')
default_class = "pull_top"
end
default_class
end
然后做
<body class="<%= body_class %>">
但是除了索引之外的所有其他页面上我最终都会
<body class="">
我想避免。
答案 0 :(得分:0)
<body <%= controller_name == 'index' ? "class='pull_top'" : '' %>>
答案 1 :(得分:0)
在我看来最终:
<body class="">
并不是什么大不了的事。逻辑被封装在帮助程序中,您仍然可以向<body>
标记添加其他类,这些类可以应用于您描述的两个方案中。例如:
<body class="<%= body_class %> pretty_style another_style">
希望这有帮助!
答案 2 :(得分:0)
您可以在application.html.erb中输入以下内容:
<body class="<%= yield :body_class %>">
...
</body>
然后,在您的特定视图中,您确实需要一个类:
provide(:body_class, 'whatever-you-want')
答案 3 :(得分:0)
怎么样:
def body_class
default_class = nil
if current_page?(controller: 'index')
default_class = "pull_top"
end
default_class
end
视图:
<body<%= " class=\"#{body_class}\"" if body_class %>>
这里的问题是body_class将被调用两次
答案 4 :(得分:0)
如果存在body_class而不是apply class,则可以使用if语句,否则可以将其保留为:
<% if body_class.present? %>
<body class="<%= body_class %>">
<% else %>
<body>
<% end %>