Вывод содержимого из render_to_string с использованием глобальной переменной - PullRequest
1 голос
/ 30 апреля 2020

Я нахожусь внутри контроллера, где у меня есть метод, который сохраняет информацию внутри глобальных переменных, например:

@var = "test"

Теперь, когда я хочу отобразить файл представления, я использую следующий код

MyController.new.render_to_string(:template => 'folder/file.erb', :layout => false)

У меня проблема в том, что внутри file.erb он не может получить доступ к переменной @ var по какой-то причине. Код выглядит следующим образом:

<% @var.each do |v| %>

<% end if !@var.nil? %>

Что возвращает ноль в качестве содержимого. Как я могу это исправить?

1 Ответ

1 голос
/ 30 апреля 2020

Я думаю, вы должны передать его как локальный: MyController.new.render_to_string(:template => 'folder/file.erb', :layout => false, :locals => { :var => @var )

Тогда он будет доступен как локальная переменная var (без @).

Если вы хотите чтобы сделать магию Rails c, вы должны указать действие, где определен ваш @var: MyController.new.render_to_string(:template => 'folder/file.erb', :layout => false, :action => 'your_action_name'), чтобы Rails мог повторно использовать вашу переменную в представлении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...