ruby-on-rails - 在 case 语句中使用 &&

标签 ruby-on-rails ruby

我正在尝试编写一个包含两个独立条件的 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 值与 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/

相关文章:

ruby-on-rails - 将局部变量注入(inject)绑定(bind)

css - postcss 在需要包的 css 文件时找不到配置

ruby-on-rails - RailsApp 帮助 Rspec 教程 未定义的方法

ruby-on-rails - Venmo/Oauth 缺少参数 : client_id.,代码:241

css - bootstrap+rails : fixed top-navbar, 页脚总是在底部,全高 div 在中间

ruby - RHEL 5.3 的最新 redhat 支持的 ruby​​ 版本?

Rails 应用程序中 Phusion Passenger 的 Mysql 错误

ruby - 正则表达式在 ruby​​ 中返回修改后的字符串

mysql - 如何使用 Ruby 将数据库从 Sqlite3 转换为架构不一致的 Mysql

ruby - 算法:字符串相似度