我正在尝试编写一个包含两个独立条件的 case
语句:
controller_name
是'pages'
或'users'
controller_name
是'static'
和action_name
是'homepage'
这是我试过的:
case controller_name
when 'pages', 'users'
stylesheet_link_tag "style"
when 'static' && action_name == 'homepage'
stylesheet_link_tag "homepage"
end
第一个 when
按预期工作,但第二个 when
没有。我怀疑 &&
导致了问题,但我无法找出正确的语法。
最佳答案
它不起作用,因为 case controller_name
将每个 when
值与 controller_name
进行比较,所以你有类似的东西:
('static' && action_name == 'homepage') === controller_name
变成:
true === controller_name
# or
false === controller_name
您可以使用 if
语句来处理 action_name
:
case controller_name
when 'pages', 'users'
stylesheet_link_tag "style"
when 'static'
if action_name == 'homepage'
stylesheet_link_tag "homepage"
else
# ...
end
end
或另一个案例
:
case controller_name
when 'pages', 'users'
stylesheet_link_tag "style"
when 'static'
case action_name
when 'homepage'
stylesheet_link_tag "homepage"
when '...'
# ...
end
end
或者可能只是:
case controller_name
when 'pages', 'users'
stylesheet_link_tag "style"
when 'static'
stylesheet_link_tag action_name
end
关于ruby-on-rails - 在 case 语句中使用 &&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425676/