Os símbolos são geralmente representados como tal
:book_author_title
mas se eu tiver uma string:
"Book Author Title"
existe uma maneira integrada no rails / ruby para convertê-lo em um símbolo no qual eu possa usar a :
notação sem fazer apenas uma substituição de regex de string bruta?
ruby-on-rails
ruby
Christopher
fonte
fonte
Respostas:
O Rails
ActiveSupport::CoreExtensions::String::Inflections
possui um módulo que fornece esses métodos. Todos eles valem a pena olhar. Para o seu exemplo:fonte
.to_s
e.humanize
deve fazer o trabalho, a menos que você precise preservar a capitalização total.from: http://ruby-doc.org/core/classes/String.html#M000809
Retorna o símbolo correspondente a
str
, criando o símbolo se ele não existia anteriormente. VejaSymbol#id2name
.Isso também pode ser usado para criar símbolos que não podem ser representados usando a
:xxx
notação.Mas para o seu exemplo ...
deve ir ;)
fonte
to_sym
] também pode ser usado para criar símbolos que não podem ser representados usando a notação: xxx".:'cat and dog'
é o mesmo que'cat and dog'.to_sym
.:"cat and dog\n on a new line"
sem a necessidadeto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
parameterize é um método rails e permite escolher o que você deseja que o separador seja. É um traço "-" por padrão.
fonte
intern → symbol Retorna o símbolo correspondente a str, criando o símbolo se ele não existia anteriormente
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
fonte
No Rails, você pode fazer isso usando o
underscore
método:O código mais simples está usando o regex (funciona com Ruby):
fonte
É isso que você está procurando ?:
:)
fonte
Isso não está respondendo à pergunta em si, mas eu a encontrei procurando a solução para converter uma string em símbolo e usá-la em um hash.
Espero que ajude alguém como eu!
fonte