【问题标题】:slim dynamic conditional class [closed]苗条的动态条件类[关闭]
【发布时间】:2013-03-06 08:17:14
【问题描述】:

只是为了帮助其他开发人员,因为在 SO 上没有类似的问题。

div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)

【问题讨论】:

    标签: ruby-on-rails slim-lang


    【解决方案1】:

    请看下面的例子:

    div class=(is_active? ? 'active' : 'inactive')
    div class=('active' if is_active?)
    

    同样的方法可用于为其他属性分配动态值。

    【讨论】:

    • 在多种情况下你会如何做到这一点?
    • 请在下面的 cmets 中查看您的答案。
    • 这个也可以追加一个类,如:div.councilor class=(councilor.retired? ? "retired" : "") 生成:div.councilor.retired
    【解决方案2】:

    如果不需要在列表中包含类,我使用类数组和 nil 元素,然后使用紧凑数组删除 nil 元素,最后将所有元素连接在一起。

    div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
    

    【讨论】:

      【解决方案3】:

      如果您有多种情况,我现在正在做类似的事情

      div class=(('foo ' if is_foo?) + ('bar' if is_bar?))
      

      虽然我觉得如果 is_bar 是个瑕疵?返回 false 并且生成的 HTML 结果为

      <div class="foo "></div>
      

      (瑕疵是foo后面的空白字符)。如果有人对此有解决方案,那就太棒了。

      【讨论】:

      • 在这种情况下尝试String#rstrip,有两个条件:div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)。或div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' ')) 有几个条件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2020-04-10
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2020-05-13
      相关资源
      最近更新 更多