2011-06-07 54 views
2
​​

$ menu_items只是一個數組[1,2]。很顯然,我想要做的就是填充@menu_pages,其中包含根據$ menu_items找到的所有頁面。爲什麼不能正常工作? (更多Ruby比Rails)

提個醒,

@menu_pages = Page.all 

的作品就好了。那麼我怎麼不能用Page.find(id)一個接一個地添加它們呢?

錯誤返回:

你有沒有對象,當你沒有想到它! 您可能預期了Array的一個實例。 評估nil時出錯0每個

+1

如下所述,這意味着$ menu_items在此上下文中未定義。除此之外,使用Rails應用程序這樣的全局變量是一種嚴重的代碼異味。如果我是你,我會嘗試找到一種方法來做你以後不使用任何全局變量。 – 2011-06-07 04:10:26

回答

5

爲什麼不呢?...

def refresh_menu 
    @menu_pages = Page.where(:id => $menu_items) 
end 

以及有關錯誤,其中$menu_items定義?

0

你在哪裏定義$menu_items?從您的錯誤消息看,它看起來像refresh_menu方法不能看到它 - 因此認爲它是nil

+0

它在initializers/constants.rb中定義,所以它應該可以被控制器訪問;事實上,它可以通過導軌控制檯訪問。 – 2011-06-07 04:01:20

4

nowk,感謝您的整潔把戲。

對於那些可能通過搜索找到的人:當您更改初始值設定項時,請不要忘記重新啓動服務器。