2013-04-04 63 views
1

定義的方法(前言:我上午10月進入學習的Rails所以這可能是一個真正的新手的錯誤)NoMethodError在Rails將助手/控制器/型號

我的應用程序有Venues其具有與它們相關VenueCategories。在我的Venue視圖中,我想在用戶將Venue共享給Twitter時將一些哈希標記填充到共享內容中。爲此,我創建了一個方法(儘管可能不是一個理想的實現,稍後會重構)hash_tags將在VenueCategory上調用。首先我把它放在VenueCategoriesHelper.rb,並且在控制檯調用它時得到了NoMethodError來測試。我將該方法移至模型和控制器,只是爲了測試它,但得到了相同的結果。

我已經嘗試定義方法,並且不通過venue_category作爲參數。

我在做什麼錯?下面的相關代碼。

VenueCategoriesHelper.rb

def hash_tags(venue_category) 
    hash_tags = [] 
    hash_tag_string = "" 
    if venue_category.name == "Restaurant" 
    hash_tags << "#restaurants" 
    elsif venue_category.name == "Salons & Spas" 
    hash_tags << ["#salons", "#spas"] 
    elsif venue_category.name == "Hotels & Resorts" 
    hash_tags << ["#hotels", "#resorts"] 
    elsif venue_category.name == "Bars & Nightlife" 
    hash_tags << ["#bars", "#nightlife"] 
    end 
    hash_tags.each do |h| 
    hash_tag_string << "#{h} " 
    end 
end 

show.html.slim(隨機片段添加到查看從控制檯測試

... 
p = resource.venue_category.hash_tags(resource.venue_category) 

#header-module 
    #overall-score-container 
    #overall-score-header 
... 

誤差與在瀏覽器中運行時

NoMethodError: undefined method `hash_tags' for #<VenueCategory:0x007ff2134b69c0> 

在此先感謝您的幫助!

+1

因此您正在定義該方法,並在該方法的第一行中將該方法重新定義爲數組?嘗試重命名該變量。但現在應該不會有問題。您嘗試訪問模型實例上的方法,因此它應該在模型中。之後,在控制檯上執行「重新加載!」。 – scones 2013-04-04 18:57:24

+0

更新後寫入最新評論。讓我試試這個。 – justinraczak 2013-04-04 19:01:37

+0

代碼現在位於模型中,但NoMethodError仍然存在。 – justinraczak 2013-04-04 19:05:31

回答

2

輔助模塊包含在視圖渲染器的範圍內,而不是模型。將視圖代碼更改爲:

p = hash_tags(resource.venue_category) 
+0

..而方法是在幫手。 – scones 2013-04-04 19:13:32

+0

釘住它。該方法的實現顯然非常糟糕,但我可以清理它。錯誤已解決 - 謝謝! – justinraczak 2013-04-04 19:14:09