【发布时间】: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