【问题标题】:How can I change a body tag ID based on the page title in rails?如何根据rails中的页面标题更改正文标签ID?
【发布时间】:2016-09-13 02:07:34
【问题描述】:

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

我在视图页面上使用提供:

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

然后在 application.html.erb 页面中,我尝试使用 if 语句根据提供的 :title 将背景图像的 CSS ID 或 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 不喜欢这样。这是我的第一个单独的 Rails 项目,我知道这应该是可能的,但我找不到正确的方法,任何帮助将不胜感激。

【问题讨论】:

  • 一个注释,:title 是一个符号(以冒号开头)。符号有点像字符串,但在记忆中具有不同的性质。检查 :title == "Home" 是否就像说 "title" == "Home" - 总是错误的。了解有关符号的更多信息:troubleshooters.com/codecorn/ruby/symbols.htm

标签: ruby-on-rails


【解决方案1】:

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

您唯一需要做的就是创建一个实例变量(@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;
   }

希望对您有所帮助.. :)

【讨论】:

  • 我对此做了一些调整,但这个概念让我成功了。完美的帮助。非常感谢。
  • 太好了..如果有帮助,您可以接受我的回答 :).. @FalconBrazilT1
猜你喜欢
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2011-09-03
  • 2018-10-13
  • 1970-01-01
  • 2018-01-09
相关资源
最近更新 更多