Ruby on rails rails错误命名方法错误

Ruby on rails rails错误命名方法错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的控制器中,我使用以下代码将所有文章发送到视图 class Admin::ArticlesController < ApplicationController layout 'adminpanel' before_action :require_user before_action :require_admin def index @articles = News.all end end class Admin::ArticlesControllera

在我的控制器中,我使用以下代码将所有文章发送到视图

class Admin::ArticlesController < ApplicationController
  layout 'adminpanel'

  before_action :require_user
  before_action :require_admin

  def index
    @articles = News.all
  end
end
class Admin::ArticlesController
但每次我重新启动rails服务器时,出于某种原因,它都会显示一个nil:nilClass错误。 当我遇到这个错误时,我必须打开我的控制器,删除其中的一个字母,重写并保存它(没有任何更改,只是重写字母以便能够保存),但我不知道为什么会发生这种情况。我有这个

新闻,全部

在rails根路由上的另一个控制器中

以下是错误的屏幕截图:


谢谢你的进一步帮助

当某个对象不存在时,不能对其调用方法

这意味着
@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>'
2.1.2:004>a=[1,2]
=> [1, 2] 
2.1.2:005>a.计数
=> 2 
2.1.2:006>a=零
=>零
2.1.2:007>a.计数
NoMethodError:nil:NilClass的未定义方法“count”
来自(irb):7
from/home/durrantm/.rvm/rubies/ruby-2.1.2/bin/irb:11:in`'

解决问题将取决于控制器、模型、迁移和视图中的代码。我会与(向前)这样的源代码进行比较。

我曾经发现,
count
无法在我的rails 4中运行。 你可以用

<% if @articles.size != 0 %>
<% end %>



我希望这能帮助你

在我看来,你需要一些条件逻辑来确定你是否真的有文章要发表

我会这样做:

<% if @articles.any? %>
   <% @articles.each do |article| %>
      <%= article.title %>
   <% end %>
<% end %>

错误基本上是
nil:nilClass
意味着你的应用程序没有填充你试图影响方法的变量

--


顺便说一句,称你的模特为“新闻”是一种不好的做法(尽管在任何程度上都不是“错误的”)。如果你固执地遵循Rails的原则,你就必须让它变得单一,以及对模型内部内容的描述,在你的例子中,
文章

每当我调用News时。所有这些都在Rails控制台中显示内容“删除其中的一个字母”是什么意思?只要删除该文件中的任何内容,如“News.all”删除最后的l并再次重写l,使其成为“News.all”,以便我可以再次保存文件。您确定控制器代码正在运行吗?My routes.rb说
get'admin/articles'=>“admin/articles#index”
,只说应该调用它。如果你在那里设置断点,它会被击中吗?您是否有其他文件正在重新定义Admin::ArticlesControllerWhy Article?我的模型叫“News”,在另一个毫无疑问可以工作的控制器中,还有News.new和其他所有功能,但只有News.all会带来麻烦OK,抱歉。我也不是这个意思。我想,你的
@文章有问题。您可以更改为
@articles.present?
。这意味着,`@articles.count!=那根本不是我的问题,我都听说了。但我的@articles确实存在,但不知何故,直到我在应用程序中重新保存我的一个文件,它才会加载,这太奇怪了。。。既然新闻是一个模型,它应该一直存在,但它说它并不意味着你的模型。然后,您是否尝试在控制台中运行
News.all
?News.all显示了我需要知道的所有内容,只是在视图中它不知怎么地不起作用
<% if @articles.any? %>
   <% @articles.each do |article| %>
      <%= article.title %>
   <% end %>
<% end %>