Los símbolos generalmente se representan como tales
:book_author_title
pero si tengo una cadena:
"Book Author Title"
¿hay una forma integrada en rails / ruby para convertirlo en un símbolo donde pueda usar la :
notación sin solo hacer un reemplazo de expresión regular de cadena sin procesar?
ruby-on-rails
ruby
Christopher
fuente
fuente
Respuestas:
Rails tiene un
ActiveSupport::CoreExtensions::String::Inflections
módulo que proporciona dichos métodos. Vale la pena mirarlos todos. Por su ejemplo:fuente
.to_s
y.humanize
debería hacer el trabajo a menos que necesite preservar la capitalización completa.de: http://ruby-doc.org/core/classes/String.html#M000809
Devuelve el símbolo correspondiente a
str
, creando el símbolo si no existía anteriormente. VerSymbol#id2name
.Esto también se puede usar para crear símbolos que no se pueden representar usando la
:xxx
notación.Pero por tu ejemplo ...
debería ir ;)
fuente
to_sym
] también se pueda usar para crear símbolos que no se puedan representar con la notación: xxx".:'cat and dog'
es el mismo que'cat and dog'.to_sym
.:"cat and dog\n on a new line"
sin la necesidad de hacerloto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
parametrizar es un método de rieles y le permite elegir qué desea que sea el separador. Es un guión "-" por defecto.
fuente
interno → símbolo Devuelve el símbolo correspondiente a str, creando el símbolo si no existía anteriormente
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
fuente
En Rails puedes hacer esto usando el
underscore
método:El código más simple usa regex (funciona con Ruby):
fuente
¿Es esto lo que estás buscando ?:
:)
fuente
Esto no responde a la pregunta en sí, pero encontré esta pregunta buscando la solución para convertir una cadena en símbolo y usarla en un hash.
Espero que ayude a alguien como yo!
fuente