在我的控制器中,我使用以下代码将所有文章发送到视图
class Admin::ArticlesController < ApplicationController
layout 'adminpanel'
before_action :require_user
before_action :require_admin
def index
@articles = News.all
end
end
但每次我重新启动我的rails服务器时,由于某种原因它会显示nil:nilClass错误。 当我遇到这个错误时,我必须打开我的控制器,删除其中的一封信,重写并保存(没有更改,只是重写了该信以便能够保存)但我不知道为什么会发生这种情况。我有这个
News.all
在另一个位于rails的根路径上的控制器
感谢您的进一步帮助!
答案 0 :(得分:1)
我曾经知道count
无法在我的轨道上运行4。
你可以使用
<% if @articles.size != 0 %>
<% end %>
或
<% if @articles.present? %>
<% end %>
我希望这可以帮到你
答案 1 :(得分:0)
当某些内容不存在时,您无法在其上调用方法。
这意味着@articles
没有值。
IRB示例:
2.1.2 :004 > a=[1,2]
=> [1, 2]
2.1.2 :005 > a.count
=> 2
2.1.2 :006 > a=nil
=> nil
2.1.2 :007 > a.count
NoMethodError: undefined method `count' for nil:NilClass
from (irb):7
from /home/durrantm/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'
解决问题取决于控制器和模型以及迁移和视图中的代码。我会比较像http://guides.rubyonrails.org/getting_started.html#the-first-form(以后)这样的来源。
答案 2 :(得分:0)
在我看来,您需要有一些条件逻辑来确定您是否确实要发布任何文章。
我会做以下事情:
<% if @articles.any? %>
<% @articles.each do |article| %>
<%= article.title %>
<% end %>
<% end %>
错误基本上是nil:nilClass
表示您的应用尚未填充您尝试影响方法的变量。
-
作为旁注,将你的模型称为“新闻”是不好的做法(虽然在任何程度上都没有“错误”)。如果你顽强地遵循Rails原则,你必须使它成为单数,以及模型内部的描述,在你的情况下Article
。