Symbole są zwykle przedstawiane jako takie
:book_author_title
ale jeśli mam ciąg:
"Book Author Title"
czy istnieje wbudowany sposób w szyny / ruby, który przekształca go w symbol, w którym mogę używać :
notacji bez konieczności zastępowania wyrażeń regularnych ciągiem regularnym?
ruby-on-rails
ruby
Krzysztof
źródło
źródło
Odpowiedzi:
Railsy mają
ActiveSupport::CoreExtensions::String::Inflections
moduł, który zapewnia takie metody. Wszystkie są warte obejrzenia. Na przykład:źródło
.to_s
i.humanize
powinien wykonać zadanie, chyba że musisz zachować pełną wielkość liter.z: http://ruby-doc.org/core/classes/String.html#M000809
Zwraca odpowiedni symbol
str
, tworząc symbol, jeśli wcześniej nie istniał. ZobaczyćSymbol#id2name
.Można to również wykorzystać do tworzenia symboli, których nie można przedstawić za pomocą
:xxx
notacji.Ale na przykład ...
powinien iść ;)
źródło
to_sym
] można również wykorzystać do tworzenia symboli, których nie można przedstawić za pomocą notacji: xxx”.:'cat and dog'
jest taki sam jak'cat and dog'.to_sym
.:"cat and dog\n on a new line"
bez potrzebyto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
Parametryzacja jest metodą szynową i pozwala wybrać, jaki ma być separator. Domyślnie jest to myślnik „-”.
źródło
intern → symbol Zwraca symbol odpowiadający str, tworząc symbol, jeśli wcześniej nie istniał
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
źródło
W Railsach możesz to zrobić za pomocą
underscore
metody:Prostszy kod używa wyrażenia regularnego (działa z Ruby):
źródło
Czy tego szukasz ?:
:)
źródło
To nie odpowiada na samo pytanie, ale znalazłem to pytanie, szukając rozwiązania konwersji łańcucha na symbol i użycia go w haszowaniu.
Mam nadzieję, że to pomaga komuś takiemu jak ja!
źródło