style rails index escape ruby-on-rails ruby haml

ruby-on-rails - rails - haml style



¿Cuál es la mejor manera de verificar si un atributo existe y está establecido? (3)

Creo que solo puedes hacer @element.attribute? (por ejemplo, @element.link? ) (Supongo que podríamos llamarlo "atributos mágicos".)

Esto comprueba

  • El atributo existente en el modelo.
  • el valor no es nulo

Exactamente lo que quieras.

Tengo una vista común que enumera dos modelos diferentes. La única diferencia es que al configurar el link_to acción, uno de los modelos tiene un atributo de link y el otro no. Quiero verificar si el atributo de link existe, y si lo tiene, verificar si está establecido. Tengo lo siguiente que funciona, pero me preguntaba si había una mejor manera.

%li - if @element.has_attribute?("link") && @element.link = link_to @element.title, @element.link - else = link_to @element.title, @element


Intenta usar los atributos hash. Este hash devolverá una key => value asignación de key => value de todos los atributos de un objeto activerecord.

if @element.attributes[''link''] # Here we are else # default end


Podrías usar presence :

= link_to @element.title, (@element.link.presence || @element)

O, si @element pudiera no tener ningún link , podría usar try :

= link_to @element.title, (@element.try(:link) || @element)