Si post.published?

.post
  / Post stuff

Lo contrario

.post.gray
  / Post stuff

He implementado este con rieles de ayudante y parece feo.

= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
  / Post stuff

Segunda variante:

= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
  / Post stuff

Hay una forma más simple y haml-específicos?

UPD. Haml específicos, pero aún no es simple:

%div{:class => "post" + (" gray" unless post.published?).to_s}
  / Post stuff

5 Comentarios

  1. 320
    .post{:class => ("gray" unless post.published?)}
    • sólo una nota al margen para varias condiciones ` {clase: [(‘class1″, a menos que condition1), (‘clase2’ si condition2)]}`, etc ..
    • Succintct y excelente, gracias!
    • Más sucinta para varias condiciones: { class:[ (:class1 if cond1), (:class2 if cond2) ] }
    • Nota: los paréntesis son necesarios o se obtendrá ruby error de sintaxis.
  2. 21
    - classes = ["post", ("gray" unless post.published?)]
    = content_tag :div, class: classes do
      /Post stuff

    def post_tag post, &block
      classes = ["post", ("gray" unless post.published?)]
      content_tag :div, class: classes, &block
    end
    
    = post_tag post
      /Post stuff
    • No de manera concisa, pero se ve mejor que el de otras formas si se ponen en un ayudante.
    • Esto funciona bien – me di cuenta de que no necesita la .compact.join(" ") aunque. Usted puede simplemente hacer :class => ["post active", ("gray" unless post.published?)]
  3. 14

    Realmente lo mejor es ponerlo en un ayudante.

    %div{ :class => published_class(post) }
    
    #some_helper.rb
    
    def published_class(post)
      "post #{post.published? ? '' : 'gray'}"
    end
    • He puesto esto en mi archivo de ayuda, pero a mi la aplicación me dice, que no hay un «post» de la variable.
    • Oops lo siento. Ha editado respuesta.
    • para su información: si sólo desea incluir una clase en un determinado caso y nada en otros casos sólo puede establecer nil y el atributo no será conjunto, en lugar de establecer class=""
  4. 14

    HAML tiene un bonito construido en forma de controlar esto:

    .post{class: [!post.published? && "gray"] }

    La forma en que esto funciona es que el condicional es evaluada y si es verdad, la cadena que incluye en las clases, si no no va a ser incluido.

Dejar respuesta

Please enter your comment!
Please enter your name here