Как отобразить строку в виде erb-файла?

#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