Essayer de faire ce qui suit
@message = render_to_string ( :sender => sender, :template => "template" )
Mais lorsque vous accédez à @Sender dans un modèle, il s'avère être nul: nilclass. Vérifiez si je passe la bonne variable et c'est totalement bien. Peut-être qu'il y a une autre façon de passer des variables à rendu_to_string?
Cela pourrait être la syntaxe que vous utilisez. Essayez d'utiliser le :locals
argument:
@m = render_to_string :template => "template", :locals => {:sender => sender}
Ensuite, vous avez juste besoin d'accéder à sender
(sans @
) comme une variable locale à l'intérieur du gabarit.
Voici Jason Kim Solution Il a écrit dans un commentaire qui a fonctionné pour moi:
ActionController::Base.new.render_to_string(
"user_mailer/welcome_email.html.erb", locals: { :@user => user}
)
S'il vous plaît méritez le :@user => value
bit.
In Rails 5 (ATM en version bêta):
ApplicationController.render(
file: 'path',
assigns: { foo: 'bar' }
)
Essaye ça:
ac = ActionController::Base.new()
ac.render_to_string(:partial => 'path to your partial',:locals => {:varable => your variables})
J'essayais de rendre un format différent de partiel à rendu_to_string. La chose qui a vraiment fonctionné pour moi était:
rendu_to_string (: partielle => 'partal_file.html' ,: locaux => {: variable => variable},: format =>: html)
où le nom du fichier était _partial_file.html.erb
.
In Rails 4.0.2 Cela a fonctionné:
render_to_string(partial: 'path/to/partial', locals: { argument: 'value'}