如何根据rails中的页面标题更改正文标记ID?

时间:2016-09-13 02:07:35

标签: ruby-on-rails

使用Ruby on Rails(5)我想使用if语句根据我正在渲染的视图来更改body标签的ID。 具体来说,我只想在我的主页上使用背景图像,而不是在任何其他图像上。我想要这个填满屏幕,但是如果我把它放在页面上它就会自动出现一个边框。所以我想将它附加到application.html.erb视图中的body标签,这样ID就会告诉CSS加载背景图像。但我无法得到:标题告诉ERB它在那里并使声明成立。

我在视图页面上使用了提供,如下所示:

<% provide(:title, "Home") %>

然后在application.html.erb页面中,我尝试使用if语句根据提供的:title将带有或不带背景图像的CSS ID的body标签放入,如下所示:

<!DOCTYPE html>
<html>
  <head>
    <title><%= yield(:title) %></title>
    ...
  </head>

    <% if :title == "Home" %>
    <body id="home-background">
    <% else %>
    <body>
    <% end %>

但它似乎不起作用。标题将“生成”并显示在地址栏中,但不会显示在if语句中。我也尝试将yield(:title)放在变量中,rails并不喜欢这样。这是我的第一个solo rails项目,我知道这应该是可行的,但我找不到如何正确地做到这一点,任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不推荐您使用body代码...但您可以在wrapper之后使用body作为背景图片......它可以是这样的: -

您唯一需要的是创建一个在下面使用的实例变量(@title

###application.html.erb

<body>

  <div class="<%= @title=="USER" ? 'user_wrapper' : 'default_wrapper' %>">

  </div>

</body>




 ##css

  .user_wrapper{
     background: url(user_background.jpg) no-repeat center center fixed;
   }

   .default_wrapper{
     background: url(default_background.jpg) no-repeat center center fixed;
   }

希望它能帮助.. :)