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 %>