tutorial tag sintax rails link_to escape content_tag ruby-on-rails ruby

ruby on rails - tag - Convertir la cadena a símbolo capaz en ruby



haml tutorial (6)

Los símbolos son usualmente representados como tales

:book_author_title

pero si tengo una cadena:

"Book Author Title"

¿hay una forma integrada en rieles / rubí para convertirlo en un símbolo donde pueda usar la notación : sin hacer simplemente una expresión en bruto de expresiones regulares reemplazar?


¿Es esto lo que estás buscando ?:

:"Book Author Title"

:)


En Rails puedes hacer esto usando el método de underscore :

"Book Author Title".delete('' '').underscore.to_sym => :book_author_title

El código más simple es usar expresiones regulares (funciona con Ruby):

"Book Author Title".downcase.gsub(//s+/, "_").to_sym => :book_author_title


Rails obtuvo el ActiveSupport::CoreExtensions::String::Inflections que proporciona dichos métodos. Todos valen la pena mirarlos. Para su ejemplo:

''Book Author Title''.parameterize.underscore.to_sym # :book_author_title


de: http://ruby-doc.org/core/classes/String.html#M000809

str.intern => symbol str.to_sym => symbol

Devuelve el símbolo correspondiente a str , creando el símbolo si no existía anteriormente. Ver Symbol#id2name .

"Koala".intern #=> :Koala s = ''cat''.to_sym #=> :cat s == :cat #=> true s = ''@cat''.to_sym #=> :@cat s == :@cat #=> true

Esto también se puede usar para crear símbolos que no se pueden representar usando la notación :xxx .

''cat and dog''.to_sym #=> :"cat and dog"

Pero para tu ejemplo ...

"Book Author Title".gsub(//s+/, "_").downcase.to_sym

debería ir ;)