Символы обычно представлены как таковые
:book_author_title
но если у меня есть строка:
"Book Author Title"
есть ли встроенный способ в rails / ruby, чтобы преобразовать его в символ, где я могу использовать :
нотацию, не просто заменяя необработанное регулярное выражение?
ruby-on-rails
ruby
Кристофер
источник
источник
Ответы:
Rails получил
ActiveSupport::CoreExtensions::String::Inflections
модуль, который предоставляет такие методы. На них все стоит посмотреть. Для вашего примера:источник
.to_s
и.humanize
должен делать работу, если вам не нужно сохранить полную капитализацию.от: http://ruby-doc.org/core/classes/String.html#M000809
Возвращает Символ, соответствующий
str
, создавая символ, если он не существовал ранее. СмSymbol#id2name
.Это также может быть использовано для создания символов, которые не могут быть представлены с использованием
:xxx
нотации.Но для вашего примера ...
должны идти ;)
источник
to_sym
] также может использоваться для создания символов, которые не могут быть представлены с использованием нотации: xxx».:'cat and dog'
так же, как'cat and dog'.to_sym
.:"cat and dog\n on a new line"
без необходимостиto_sym
.http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
Параметризация - это метод rails, и он позволяет вам выбрать, каким должен быть разделитель. По умолчанию это тире "-".
источник
intern → symbol Возвращает символ, соответствующий str, создавая символ, если он ранее не существовал
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
источник
В Rails вы можете сделать это, используя
underscore
метод:Более простой код использует регулярные выражения (работает с Ruby):
источник
Это то, что вы ищете?
:)
источник
Это не отвечает на сам вопрос, но я нашел этот вопрос в поисках решения для преобразования строки в символ и использования ее в хэше.
Надеюсь, это поможет кому-то, как я!
источник