【问题标题】:Semi static page menu partials半静态页面菜单部分
【发布时间】:2011-07-14 14:03:04
【问题描述】:

我创建了一个半静态页面,我想将其添加到我的 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 %>

Routes.rb

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

application.html.erb

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

pages/_menu.html.erb

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

Rails -v 3.0.7

我已经尝试了一些东西,但这里仍然有问题,有一段时间没有在 Rails 项目上工作了,我很生疏!

提前感谢您的帮助!

【问题讨论】:

  • @pages 数组初始化了吗?
  • 第一:在partials中使用实例变量是一种反模式,第二:你在哪里定义@pages

标签: ruby-on-rails partial-views static-pages


【解决方案1】:

@pages 未初始化。由于您是在应用程序布局中访问它,我建议您在 application_controller.rb 中定义一个 before_filter 来初始化这个 @pages 数组。

【讨论】:

  • 不确定你的意思,有一段时间没有在 Rails 中工作了。
  • 首先尝试找出@pages 实例变量未初始化的原因。
  • 完美运行我在 application_controller 中添加了 before_filter。谢谢尤金!
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多