如何在 HAML 中的 link_to 中将动态添加到静态 类?

How to add dynamic to static classes in a link_to in HAML?

假设我有一些 HAML,我想要一个 link_to 和一个解析为

的 bootstrap btn class
class: `btn btn-grouped btn-close`

但我还想添加一个条件来添加 class hidden 如果某些状态为真?

所以 class 可能是这样的:

btn btn-grouped btn-close disabled

但他们也可能是这样的:

btn btn-grouped btn-close

我尝试做两个 class: 声明。这似乎对我不起作用。

我的目标是在不在 class 列表末尾添加额外的 space 的情况下执行此操作。

如果我没理解错的话,下一段可能对你有帮助::

%div{:class => "num_seat passenger_seat #{'hidden' if !f.object.available_for_seat?}" }

你可以这样做:

class: "btn btn-grouped btn-close #{button_visibility}"

然后将 button_visibility 添加到您的助手。

def button_visibility 
  if some_status == true
    "hidden"
  else
    "disabled"
  end
end

我认为没有理由关心 HTML 类名中的额外 space。如果它烦人,你可以定义一个助手:

def hidden_classname(status)
  return 'hidden' if status
end

然后在视图中调用传递所需status参数的方法:

%div{ class: "#{['btn', 'btn-grouped', 'btn-close', hidden_classname(status)].compact.join(' ')}" }