Rails 中使用的 SLIM 中的动态 class 名称

Dynamic class name in SLIM used in Rails

我正在将 SLIM 与 Rails 一起使用,并希望优化我的一个视图。

我有三个 alert SCSS 类:

alert-notice
alert-success
alert-danger

一个值:alert-type 作为字符串传递给视图,有以下可能:

notice
success
danger

我可以写一段复杂的代码,像这样:

- if alert-type == 'notice'
    .alert.alert-notice[role="alert"]
      button.close[type="button" data-dismiss="alert" aria-hidden="true"]
  elsif alert-type == 'success'
    .alert.alert-success[role="alert"]
      button.close[type="button" data-dismiss="alert" aria-hidden="true"]
  else
     .alert.alert-danger[role="alert"]
       button.close[type="button" data-dismiss="alert" aria-hidden="true"]

但这似乎效率很低。有什么想法吗?

编辑:

像这样的东西可以工作:

|  <div class="alert alert-
= name.to_s == 'notice' ? 'success' : 'danger'
| " role="alert"> 
button.close[type="button" data-dismiss="alert" aria-hidden="true"]
  | ×

但是这段代码有点难看,想知道我是否可以使用简化的 SLIM 语法:.alert.alert......

我不使用 slim 提前道歉。但是,基于快速搜索,它似乎类似于

div role = "alert" class = "alert alert-#{alert-type}"
  button.close[type="button" data-dismiss="alert" aria-hidden="true"]

看起来你也应该能够做到:

.alert[role = "alert" class = "alert-#{alert-type}"]
  button.close[type="button" data-dismiss="alert" aria-hidden="true"]