2012-04-24 46 views
0

我有這樣的控制器:HAML諧音 - 部分不承認這是我在控制器查詢的對象

def index 
    @disclosures = Disclosure.where(:user_id => current_user.id) 

    respond_to do |format| 
     format.html{} 
     format.js{} 
    end 

    end 

,並與良好的鄉親在StackOverflow上的幫助,我現在能得到我的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 

說ing:

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 2012-04-24 21:19:08

+0

查看上面的更新。 – CambridgeMike 2012-04-24 21:21:10

+0

剛剛嘗試過,現在我得到這個錯誤:當你沒有想到它時,你有一個零對象! 您可能預期了Array的一個實例。 評估nil.empty時發生錯誤? – GeekedOut 2012-04-24 21:23:40