为什么这不起作用? (Ruby比Rails更多)

时间:2011-06-07 03:54:19

标签: ruby-on-rails ruby

def refresh_menu
    @menu_pages = []

    $menu_items.each do |id|
        @menu_pages[id - 1] = Page.find(id)
    end
end

$ menu_items只是一个数组[1,2]。显然我想要做的是填充@menu_pages,其中包含根据$ menu_items找到的所有页面。

请注意,

@menu_pages = Page.all

工作得很好。那么为什么我不能用Page.find(id)一个一个地添加它们呢?

返回错误:

当你没想到它时,你有一个零对象! 您可能期望一个Array实例。 评估nil.each时发生错误

3 个答案:

答案 0 :(得分:5)

为什么不这样做?...

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

关于错误,$menu_items定义在哪里?

答案 1 :(得分:4)

nowk,谢谢你这个巧妙的伎俩。

对于那些可能通过搜索找到的人:不要忘记在更改初始化程序时重新启动服务器。

答案 2 :(得分:0)

您在哪里定义$menu_items?从您的错误消息看,refresh_menu方法看起来无法看到它 - 因此认为它是nil