我的网页控制器有以下代码:
class PagesController < ApplicationController
def index
@pages = Page.all
end
def new
@page = Page.new
end
def edit
@page = Page.find(params[:id])
end
def create
@page = Page.new(page_params)
@page.save
redirect_to @page
end
def update
@page = Page.find(params[:id])
@page.update(page_params)
redirect_to @page
end
def show
@page = Page.find(params[:id])
end
def destroy
@page = Page.find(params[:id])
@page.destroy
redirect_to pages_path
end
private
def page_params
params.require(:page).permit(:title,:description)
end
end
在我的导航栏中,我有这段代码:
<% @pages.each do |page| %>
<li?<%= link_to 'page.title', page_path(page)%></li>
<% end %>
代码应该生成每个页面的标题,但是当我运行页面时出现以下错误:
undefined method `each' for nil:NilClass
我以为我已经通过在PagesController中的新函数中输入代码来消除了这个问题。此页面控制器仅用于其他页面。导航栏还包含指向静态页面的链接,因此导航栏中应始终有一些值。
有人有什么建议吗?
答案 0 :(得分:0)
试试这个:
在 application_controller.rb
中添加此内容@pages = Page.all
并在导航栏
中<% @pages.each do |page| %>
<li><%= link_to "#{page.title}", page_path(page)%></li>
<% end %>
答案 1 :(得分:-2)
听起来你的Page
表中没有任何页面。确保已使用某些页面填充此表。
您还可以将代码包装在unless
子句中,以检查@pages
是否为零。
例如:
<% unless @pages.nil? %>
<% @pages.each do |page| %>
<li?<%= link_to 'page.title', page_path(page)%></li>
<% end %>
<% end %>