2012-04-24 8 views
0

での問い合わせオブジェクトを認識していない私は、このコントローラを持っていますHAMLのパーシャル部分は、私は、コントローラ

= render :partial => "/influencers/disclosures/shared/list" 

が、この部分はスローと例外:

-if disclosures.empty? 
    .alert.alert-info 
    %p=(no_disclosures_message || (t "influencers.influencer_dashboard.disclosures.no_disclosures")) 
%table.table.influencer-disclosures 
    %tbody 
    -disclosures.each do |disclosure| 
     =render "influencers/disclosures/shared/row", :disclosure => disclosure 

は言う。このような部分的に以下のようになります。

undefined local variable or method `disclosures' for #<#<Class:0x133ca8a58>:0x133ca25e0> 

これはどのようにすることができますか?私はちょうど私のコントローラの開示オブジェクトを照会しました。なぜこれが起こっているか、それを修正する方法は?

ありがとうございます!

答えて

4

公開の前に@を付ける必要があります。これは、コントローラが変数をビューに渡す方法です。

-if @disclosures.empty? 

[email protected] do |disclosure| 

更新

この問題を解決するもう一つの方法は、変更あなたのレンダリング呼び出しです。これにより、同じ部分の他のコールサイトと後方互換性があります。

render :partial => "/influencers/disclosures/shared/list", :locals => {:disclosures => @disclosures} 
+0

ありがとうございますか?コードベースには、それらのパーシャルを使用している他のコードがあります。彼らは現在のようにそれらの部分を使用することは可能ですか? – GeekedOut

+0

上記のアップデートをご覧ください。 – CambridgeMike

+0

ちょうどそれを試して、今私はこのエラーが表示されます:あなたはそれを期待していないときにあなたは無しのオブジェクトがあります! Arrayのインスタンスが想定されている可能性があります。 nil.emptyの評価中にエラーが発生しましたか? – GeekedOut

関連する問題