2010-09-15 16 views
26

Tratando de hacer lo siguiente¿Cómo pasar variables a render_to_string?

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

Pero cuando se accede a @sender en la plantilla que resulta ser nula: NilClass. Comprobado dos veces si paso la variable correcta y está totalmente bien. Tal vez hay otra forma de pasar variables a render_to_string?

Respuesta

33

Puede ser la sintaxis que está utilizando. Trate de usar el argumento :locals:

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

Entonces sólo tiene que acceder sender (sin @) como una variable local dentro de la plantilla.

+1

probado este. Mismo problema – Arty

+6

Acabo de notar que estaba tratando de acceder al remitente como '@ sender' en su vista. No estoy seguro acerca de su código original, pero si usa la sintaxis local, será una variable local (no una variable de instancia) y se accederá sin '@' –

+0

Su solución realmente funciona. Puede pasar locales como dijo y acceder a ellos como variables locales, no como variables de instancia. – MrYoshiji

0

En los carriles 4.0.2 Esto funcionó:

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

yo estaba tratando de hacer que un formato diferente de parcial en render_to_string. Lo que en realidad trabajó para mí era:

render_to_string (: parcial => 'partial_file.html': clientes locales => {: variable => variable}, Formato =>: html)

donde el nombre del archivo era _partial_file.html.erb.

1

Prueba esto:

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

Aquí hay solución Jason Kim 's, escribió en un comentario que funcionó para mí:

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

agradar a la mente el bit :@user => value.


En los carriles 5 (atm en beta):

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

More here

Cuestiones relacionadas