Полустатические части меню страницы

Я создал полустатические страницы, которые я хотел бы добавить в меню в моем файле application.html.erb и вызывать через частичное представление для всех, но это работает только на странице.

Ошибка в индексе пользователя

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Extracted source (around line #1):

1: <% @pages.each do |page| %>
2: <li><%=link_to page.name, page.name %></li>
3: <% end %>

Маршруты.рб

Vgrant::Application.routes.draw do
  resources :pages

  get "user_sessions/new"

  root :to => "Pages#index"

  resources :users

  resources :user_sessions

  match 'login' => "user_sessions#new",      :as => :login
  match 'logout' => "user_sessions#destroy", :as => :logout

  match ':name', :controller => 'pages', :action => 'show'

end

приложение.html.erb

<%= render :partial => "pages/menu" %>

страницы/_menu.html.erb

<% @pages.each do |page| %>
<li><%=link_to page.name, page.name %></li>
<% end %>

Рельсы -v 3.0.7

Я пробовал несколько вещей, но у меня все еще есть проблемы, я некоторое время не работал над проектом рельсов, я очень ржавый!

Заранее благодарю за любую помощь!


person MrThomas    schedule 14.07.2011    source источник
comment
массив @pages инициализирован?   -  person Gwilym Kuiper    schedule 14.07.2011
comment
во-первых: это анти-шаблон для использования переменных экземпляра в партиалах, во-вторых: где вы определяете @pages   -  person apneadiving    schedule 14.07.2011


Ответы (1)


@pages не инициализирован. Поскольку вы обращаетесь к нему в макете приложения, я бы посоветовал вам определить before_filter в application_controller.rb для инициализации этого массива @pages.

person eugen    schedule 14.07.2011
comment
Не уверен, что вы имеете в виду, некоторое время не работал с рельсами. - person MrThomas; 14.07.2011
comment
Сначала попробуйте выяснить, почему переменная экземпляра @pages не инициализирована. - person eugen; 14.07.2011
comment
Сработало отлично, я добавил фильтр before_filter в свой application_controller. Спасибо Евгений! - person MrThomas; 16.07.2011