How to pass variables to render_to_string?

前端 未结 5 621
余生分开走
余生分开走 2020-12-14 06:17

Trying to do the following

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

But when accessing

相关标签:
5条回答
  • 2020-12-14 06:34

    It might be the syntax you're using. Try using the :locals argument:

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

    Then you just need to access sender (without an @) as a local variable inside the template.

    0 讨论(0)
  • 2020-12-14 06:37

    I was trying to render a different format of partial in render_to_string. The thing which really worked for me was:

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

    where the name of the file was _partial_file.html.erb.

    0 讨论(0)
  • 2020-12-14 06:54

    In rails 4.0.2 this worked:

    render_to_string(partial: 'path/to/partial', locals: { argument: 'value'}
    
    0 讨论(0)
  • 2020-12-14 06:58

    Try this:

    ac = ActionController::Base.new()  
    ac.render_to_string(:partial => 'path to your partial',:locals => {:varable => your variables})
    
    0 讨论(0)
  • 2020-12-14 06:59

    Here's Jason Kim's solution he wrote in a comment which worked for me:

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

    Please mind the :@user => value bit.


    In Rails 5 (atm in beta):

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

    More here

    0 讨论(0)
提交回复
热议问题