【发布时间】:2017-05-05 22:10:45
【问题描述】:
我的页面控制器有这个代码:
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 的新函数中输入代码已经消除了这个问题。此页面控制器仅用于附加页面。导航栏还包含指向静态页面的链接,因此导航栏中应该总是有一些价值。
有什么建议吗?
【问题讨论】:
-
它适用于
index,但不适用于show。或者,它永远不会起作用? -
它在导航栏以外的地方工作。我有一个单独的页面,用户可以在其中创建读取更新和销毁页面。此功能在此处有效,但在导航栏中无效
-
导航栏抛出错误时调用的是什么控制器/动作?
-
给出错误。没有添加页面时,方法 each 不定义
标签: ruby-on-rails ruby controller