我遇到了Ruby的一些条件逻辑问题。不可否认,我是Ruby的所有新手。
此代码导致网站无法加载:
<body style="background-image:url("<%= if @is_home_page.present? '/images/bg-main-power-bg.jpg' else '/images/bg-inner-power-bg.jpg' end %>"); background-repeat:repeat-x;">
没有条件,CSS加载就好了。
我做错了什么?
由于
答案 0 :(得分:2)
使用三元运算符进行内联条件。
condition ? branch_a : branch_b
a == b ? "foo" : "bar"
# is the same as
if a == b
"foo"
else
"bar"
end
针对您的具体情况:
@is_home_page ? '/images/bg-main-power-bg.jpg' : '/images/bg-inner-power-bg.jpg'
答案 1 :(得分:2)
您的原始代码:您可能遇到的错误可能是由于此代码段"
中的第二个"background-image:url("<%= ...
造成的。尝试更改它,以便<%= ... %>
在单引号内,而不是双引号,因为整个字符串已经用双引号分隔。
理想情况下,您应该努力:
所以:
some.html.erb
<body class='<%= body_class %>'>
some_helper.rb
class SomeHelper
def body_class
@is_home_page.present? ? "has_homepage" : "no_homepage"
end
end
some.css:
body.has_homepage
background-image:url('/images/bg-main-power-bg.jpg')
.......
body.no_homepage
background-image:url(/images/bg-inner-power-bg.jpg')
.......
答案 2 :(得分:1)
您也可以考虑将其移至帮助文件。您可以将以下内容添加到app/helpers/application_helper.rb
def bg_path
return '/images/bg-main-power-bg.jpg' if current_page? root_path
'/images/bg-inner-power-bg.jpg'
end
这使您的视图更清晰。
<body style="background-image:url("<%= bg_path %>"); background-repeat:repeat-x;">
阅读:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F