web-dev-qa-db-ja.com

変数をrender_to_stringに渡す方法は?

以下を実行しようとしています

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

しかし、テンプレートで@senderにアクセスすると、nil:NilClassになります。正しい変数を渡したかどうかを再確認し、それで問題ありません。多分render_to_stringに変数を渡す他の方法がありますか?

35
Arty

それはあなたが使っている構文かもしれません。 :locals引数を使用してみてください:

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

次に、テンプレート内のローカル変数としてsender@なし)にアクセスするだけです。

49
Peter Brown

ここに Jason Kim が彼のために書いたコメントの解決策があります。

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

:@user => valueビット。


Rails 5(atm in beta):

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

詳細はこちら

15
Adit Saxena

これを試して:

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

Render_to_stringでパーシャルの別のフォーマットをレンダリングしようとしていました。私にとって本当にうまくいったことは:

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

ここで、ファイルの名前は_partial_file.html.erb

2
Gaurav Agarwal

Rails 4.0.2ではこれはうまくいきました:

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