2009-08-06 4 views
10

独自のローカルとして別の部分に送信されたときに部分的な地元の人々が永続ない:Railsの私はそうのような部分をレンダリング

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %> 

ので_some_partial.html.erbの内側に、私はそうのような2つのパーシャルレンダリング:

<% #foo.nil? #=> false %> 
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %> 
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>` 

をfooローカル変数は、some_partial.html.erb、さらにはanother_partial_again.html.erbでもうまく表示されます。しかし、レンダリングコールで明示的に渡しても、foo変数はanother_partial.html.erbではアクセスできません。

ここで何が起こっているか

ありがとうございました。解決

+0

「アクセスできない」とはどういう意味ですか?それは '未定義のローカル変数またはメソッド'を投げるか 'nil'ですか?これらの部分部分に 'foo'を使うコードを表示できますか? – hsribei

+0

これは未定義のローカル変数 – user94154

+0

をスローします。<%= foo %> – user94154

答えて

3

。私は、適切なローカル変数を送信せずにコントローラから同じ部分をレンダリングしていました。とにかく、ありがとう!!!

+1

私は実際に同じ問題を抱えていましたが、私の解決策はまったく同じでした。私はあなたの間違いを見たときにそれを理解しました:P –

+0

私も! ha。 "myvar"を " - if myvar"&myvar " – Chris

+0

ここでAJAXで部分的に渡していましたが、記号を変更するのを忘れました – yoshyosh

41

:localsを定義して部分をレンダリングしていたときに、私もundefined local variable or methodエラーが発生しました。

しかし、私は私の問題を引き起こして別の問題を持っていたので、私はそれが誰を助け、私はケースに私の解決策を共有するだろうと思いました。 (このページは結局のところ、このエラーを最初に見つけたとき)

基本的には、renderへの電話で:partial => 'path/to/partial'を必ず使用してください。

I.e.

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %> 

簡単に欠場する私のようなレール/ルビー初心者のために:

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %> 

私がやっていたようではありません。私は同じ問題に直面して、この非常に古い問題の原因にぶつかった

+0

+1人生節約、ありがとう! –

+6

+1 @ asgeo1奇妙なことに、あなたはそれを動作させるために ':partial'が必要ですが、これは本当にうまくいきます! – iwasrobbed

+0

うわー!ありがとう...私はRubyを学んでいるだけで、私はこのエラーに関して完全に混乱していました。私はより多くのポイントをモディファイすることができたらいいと思う。 – Nabheet

0

。 レールと4+あなたは正しい方法をコレクションを使用またはレイアウトされていない場合があることが判明:

# Instead of <%= render partial: "account", locals: { account: @buyer } %> 
<%= render "account", account: @buyer %> 

hereを文書化したよう。

関連する問題