我认为将@links=Link.all
添加到我的控制器会解决这个问题。
我确实通过查看Link.count=6
我收到以下错误:
页面中的NoMethodError #index
显示/Projects/reddit_on_rails/app/views/pages/index.html.erb,其中第6行被提出:
未定义的方法`each'代表nil:NilClass
<ul>
<% @links.each do |link| %>
<li>link.url</li>
<li>link.title</li>
<% end %>
我的控制器:
class LinksController < ApplicationController
#Added @links =Link.all did not solve the problem
def index
@links = Link.all
end
def show
end
def new
@link = Link.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @link }
end
end
def create
@link = Link.new(link_params)
if @link.save
#render "new"
redirect_to "/"
else
# This line overrides the default rendering behavior, which
# would have been to render the "create" view.
render "new"
end
end
private
def link_params
params.require(:link).permit(:title,:url)
end
end
答案 0 :(得分:0)
@links
是nil
,因为您没有在控制器的任何位置设置@links = Link.all
。
您无法在each
上致电nil
。
答案 1 :(得分:0)
你在看什么?假设index.html.erb。
在控制器中,尝试添加
def index
@link = Link.all
end
如果不起作用,请确认您有任何链接。在终端中而不是键入rails server
类型
rails console
Link.all
如果以[]
的形式返回,那么您的数据库中没有任何内容。
答案 2 :(得分:0)
根据您的说明,您收到以下错误消息
NoMethodError in Pages#index
Showing /Projects/reddit_on_rails/app/views/pages/index.html.erb where line #6 raised:
根据错误消息,Pages
方法中的index
控制器出现问题。因此,您需要在Pages
控制器内部而不是Links
控制器内部解决问题。
您的index
控制器中是否有名为Pages
的方法?