Simbol biasanya direpresentasikan seperti itu
:book_author_title
tetapi jika saya memiliki string:
"Book Author Title"
apakah ada cara dibangun di rel / ruby untuk mengubahnya menjadi simbol di mana saya dapat menggunakan :
notasi tanpa hanya melakukan penggantian string regex mentah?
ruby-on-rails
ruby
Christopher
sumber
sumber
Jawaban:
Rails mendapat
ActiveSupport::CoreExtensions::String::Inflections
modul yang menyediakan metode seperti itu. Semuanya layak untuk dilihat. Sebagai contoh Anda:sumber
.to_s
dan.humanize
harus melakukan pekerjaan kecuali Anda perlu mempertahankan kapitalisasi penuh.dari: http://ruby-doc.org/core/classes/String.html#M000809
Mengembalikan Simbol yang sesuai dengan
str
, menciptakan simbol jika sebelumnya tidak ada. LihatSymbol#id2name
.Ini juga dapat digunakan untuk membuat simbol yang tidak dapat direpresentasikan menggunakan
:xxx
notasi.Tapi untuk contoh Anda ...
harus pergi ;)
sumber
to_sym
] juga dapat digunakan untuk membuat simbol yang tidak dapat direpresentasikan menggunakan notasi: xxx".:'cat and dog'
sama dengan'cat and dog'.to_sym
.:"cat and dog\n on a new line"
tanpa perluto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
parameterize adalah metode rel, dan memungkinkan Anda memilih apa yang Anda inginkan untuk pemisah. Ini adalah tanda hubung "-" secara default.
sumber
intern → symbol Mengembalikan simbol yang sesuai dengan str, membuat simbol jika sebelumnya tidak ada
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
sumber
Di Rails Anda dapat melakukan ini menggunakan
underscore
metode:Kode yang lebih sederhana menggunakan regex (berfungsi dengan Ruby):
sumber
Apakah ini yang Anda cari ?:
:)
sumber
Ini bukan menjawab pertanyaan itu sendiri, tetapi saya menemukan pertanyaan ini mencari solusi untuk mengubah string menjadi simbol dan menggunakannya pada hash.
Semoga ini bisa membantu orang seperti saya!
sumber