rails bug nomethod错误

时间:2015-09-19 14:06:29

标签: 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

但每次我重新启动我的rails服务器时,由于某种原因它会显示nil:nilClass错误。 当我遇到这个错误时,我必须打开我的控制器,删除其中的一封信,重写并保存(没有更改,只是重写了该信以便能够保存)但我不知道为什么会发生这种情况。我有这个

  

News.all

在另一个位于rails的根路径上的控制器

以下是错误的屏幕截图: error

感谢您的进一步帮助!

3 个答案:

答案 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