Les symboles sont généralement représentés comme tels
:book_author_title
mais si j'ai une chaîne:
"Book Author Title"
y a-t-il un chemin intégré dans rails / ruby pour le convertir en un symbole où je peux utiliser la :
notation sans simplement faire un regex de chaîne brut?
ruby-on-rails
ruby
Christophe
la source
la source
Réponses:
Rails a un
ActiveSupport::CoreExtensions::String::Inflections
module qui fournit de telles méthodes. Ils valent tous la peine d'être examinés. Pour votre exemple:la source
.to_s
et.humanize
devrait faire le travail à moins que vous ne deviez conserver une capitalisation complète.à partir de: http://ruby-doc.org/core/classes/String.html#M000809
Renvoie le symbole correspondant à
str
, créant le symbole s'il n'existait pas auparavant. Tu voisSymbol#id2name
.Cela peut également être utilisé pour créer des symboles qui ne peuvent pas être représentés à l'aide de la
:xxx
notation.Mais pour votre exemple ...
devrait aller ;)
la source
to_sym
] peut également être utilisé pour créer des symboles qui ne peuvent pas être représentés à l'aide de la notation: xxx".:'cat and dog'
est le même que'cat and dog'.to_sym
.:"cat and dog\n on a new line"
sans avoir besoin deto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
Le paramétrage est une méthode de rails, et il vous permet de choisir ce que vous voulez que le séparateur soit. C'est un tiret "-" par défaut.
la source
intern → symbol Renvoie le symbole correspondant à str, créant le symbole s'il n'existait pas auparavant
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
la source
Dans Rails, vous pouvez le faire en utilisant la
underscore
méthode:Le code plus simple utilise regex (fonctionne avec Ruby):
la source
Est-ce ce que vous cherchez ?:
:)
la source
Cela ne répond pas à la question elle-même, mais j'ai trouvé cette question en recherchant la solution pour convertir une chaîne en symbole et l'utiliser sur un hachage.
J'espère que cela aide quelqu'un comme moi!
la source