Symbole werden normalerweise als solche dargestellt
:book_author_title
aber wenn ich eine Zeichenfolge habe:
"Book Author Title"
Gibt es eine eingebaute Methode in Rails / Ruby, um sie in ein Symbol umzuwandeln, in dem ich die :
Notation verwenden kann, ohne nur einen regulären String-Regex zu ersetzen?
ruby-on-rails
ruby
Christopher
quelle
quelle
Antworten:
Rails hat ein
ActiveSupport::CoreExtensions::String::Inflections
Modul, das solche Methoden bereitstellt. Sie sind alle einen Blick wert. Für Ihr Beispiel:quelle
.to_s
und.humanize
sollte den Job machen, es sei denn, Sie müssen die volle Kapitalisierung beibehalten.von: http://ruby-doc.org/core/classes/String.html#M000809
Gibt das entsprechende Symbol zurück
str
und erstellt das Symbol, falls es zuvor nicht vorhanden war. SieheSymbol#id2name
.Dies kann auch verwendet werden, um Symbole zu erstellen, die mit der
:xxx
Notation nicht dargestellt werden können .Aber für dein Beispiel ...
sollte gehen ;)
quelle
to_sym
] auch verwendet werden kann, um Symbole zu erstellen, die nicht mit der: xxx-Notation dargestellt werden können".:'cat and dog'
ist das gleiche wie'cat and dog'.to_sym
.:"cat and dog\n on a new line"
nötig istto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
parameterize ist eine Rails-Methode, mit der Sie auswählen können, wie das Trennzeichen aussehen soll. Es ist standardmäßig ein Bindestrich "-".
quelle
intern → symbol Gibt das Symbol zurück, das str entspricht, und erstellt das Symbol, falls es zuvor nicht vorhanden war
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
quelle
In Rails können Sie dies mit folgender
underscore
Methode tun :Der einfachere Code verwendet Regex (funktioniert mit Ruby):
quelle
Ist es das, wonach du suchst?:
:) :)
quelle
Dies beantwortet nicht die Frage selbst, aber ich fand diese Frage auf der Suche nach der Lösung, um eine Zeichenfolge in ein Symbol zu konvertieren und sie für einen Hash zu verwenden.
Hoffe es hilft jemandem wie mir!
quelle