在 case 语句中使用 &&

汤姆炸弹

我正在尝试case用两个单独的条件编写一个语句:

  1. controller_name'pages''users'
  2. 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-value 与进行比较controller_name,因此您有以下内容:

('static' && action_name == 'homepage') === controller_name

变成:

true === controller_name
# or
false === controller_name

您可以处理action_nameusingif语句:

case controller_name
when 'pages', 'users'
  stylesheet_link_tag "style"
when 'static'
  if action_name == 'homepage'
    stylesheet_link_tag "homepage"
  else
    # ...
  end
end

或另一个case

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档