39 votes

Comment passer des variables à render_to_string ?

Essayer de faire ce qui suit

@message = render_to_string ( :sender => sender, :template => "template" )          

Mais lorsque vous accédez à @sender dans le modèle, il s'avère être nul :NilClass. Vérifié si je passe la bonne variable et c'est totalement bon. Peut-être qu'il y a une autre façon de passer des variables à render_to_string ?

51voto

Beerlington Points 25012

C'est peut-être la syntaxe que vous utilisez. Essayez d'utiliser l'argument :locals :

@m = render_to_string :template => "template", :locals => {:sender => sender}

Ensuite, il vous suffit d'accéder à sender (sans @) en tant que variable locale à l'intérieur du modèle.

16voto

Adit Saxena Points 648

Voici la solution de Jason Kim qu'il a écrite dans un commentaire qui a fonctionné pour moi :

ActionController::Base.new.render_to_string(
  "user_mailer/welcome_email.html.erb", locals: { :@user => user}
)

Veuillez vous soucier du peu :@user => value.


Dans Rails 5 (atm en bêta) :

ApplicationController.render(
  file: 'path',
  assigns: { foo: 'bar' }
)

Pour en

savoir plus, cliquez ici

4voto

Manish Prajapat Points 75

Essayez ceci :

ac = ActionController::Base.new()  
ac.render_to_string(:partial => 'path to your partial',:locals => {:varable => your variables})

2voto

vladCovaliov Points 701

Dans les rails 4.0.2 cela a fonctionné :

render_to_string(partial: 'path/to/partial', locals: { argument: 'value'}

2voto

Gaurav Agarwal Points 2202

J'essayais de rendre un format différent de partial dans render_to_string. La chose qui a vraiment fonctionné pour moi était :

render_to_string(:partial => 'partial_file.html', :locals => {:variable => variable}, :format => :html)

où le nom du fichier était _partial_file.html.erb.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X