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

dsp*_*099 2 ruby ruby-on-rails

def refresh_menu
    @menu_pages = []

    $menu_items.each do |id|
        @menu_pages[id - 1] = Page.find(id)
    end
end
Run Code Online (Sandbox Code Playgroud)

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

提个醒,

@menu_pages = Page.all
Run Code Online (Sandbox Code Playgroud)

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

错误返回:

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

now*_*owk 5

为什么不呢?......

def refresh_menu
  @menu_pages = Page.where(:id => $menu_items)
end
Run Code Online (Sandbox Code Playgroud)

并且就错误而言,$menu_items定义在哪里?