#ruby-on-rails #ruby #erb
#ruby-on-rails #рубиновый #эрб
Вопрос:
Как я могу отобразить строку, подобную отображению erb-файлов.
например, мне нужна эта строка:
"Hello <%= 'World'%>"
Быть:
"Hello World"
Как я могу это сделать?
Ответ №1:
Если я правильно вас понимаю, это было бы полезно:
require 'erb'
str = "Hello <%= 'World'%>"
result = ERB.new(str).result # => "Hello World"
Обновить
Если вы хотите использовать переменные:
require 'erb'
w = "World"
str = "Hello <%= w %>"
result = ERB.new(str).result(binding) # => "Hello World"
Комментарии:
1. Это здорово, но что делать, если в строке есть переменные? Могу ли я передать эти переменные?
2. Конечно, но вы должны использовать переменные экземпляра вместо локальных переменных. Я обновил свой пост.
3. У меня какая-то странная проблема. Этот код работает для меня в консоли, но он не работает, когда я запускаю его на контроллере.
4. Это действительно работает, однако я немного смущен, как вы узнали, что нужно использовать это слово
binding
. Кроме того, чтобы устранить любую путаницу, этот код принадлежит контроллеру, а не другому ERB-файлу.5. Для получения информации о ключевом слове binding: привязка из ruby core: ruby-doc.org/core-2.4.0/Binding.html