Как передать переменные для рендеринга в string?
попытка сделать следующее
@message = render_to_string ( :sender => sender, :template => "template" )
но при доступе к @sender в шаблоне получается nil: NilClass. Дважды проверено, передаю ли я правильную переменную, и все в порядке. Может быть, есть другой способ передать переменные в render_to_string?
5 ответов
это может быть синтаксис, который вы используете. Попробуйте использовать :
@m = render_to_string :template => "template", :locals => {:sender => sender}
тогда вам просто нужно получить доступ sender
(без @
) в качестве локальной переменной внутри шаблона.
здесь Джейсон Кимрешение он написал в комментарии, который работал для меня:
ActionController::Base.new.render_to_string(
"user_mailer/welcome_email.html.erb", locals: { :@user => user}
)
обратите внимание :@user => value
бит.
в Rails 5 (atm в бета-версии):
ApplicationController.render(
file: 'path',
assigns: { foo: 'bar' }
)
Я пытался отобразить другой формат частичного в render_to_string. То, что действительно сработало для меня, было:
render_to_string (: partial => 'partial_file.HTML-код', :местные жители => {:переменная => переменная}, :формат => :HTML-код)
где имя файла _partial_file.html.erb
.
попробуйте это:
ac = ActionController::Base.new()
ac.render_to_string(:partial => 'path to your partial',:locals => {:varable => your variables})
в rails 4.0.2 это сработало:
render_to_string(partial: 'path/to/partial', locals: { argument: 'value'}