【问题标题】:Ruby on Rails "NoMethodError" with no information没有信息的 Ruby on Rails“NoMethodError”
【发布时间】:2012-01-24 21:24:11
【问题描述】:

在最终编辑中回答

我正在使用 Rails 3.1.3 运行一个项目。我只有一页网页,我的应用程序控制器如下所示:

class ApplicationController < ActionController::Base
protect_from_forgery

def index
end

end

还有一条路线

root :to =&gt; 'application#index'

在 routes.rb 中。

当我加载页面时,我在正文中收到此错误:在页面顶部的 html 标记之前(否则内容似乎加载正常)

NoMethodError: You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.[]

我的控制台中没有显示服务器正在运行的位置,也没有关于错误发生位置的信息。

如您所见,我不知道从哪里开始寻找这个 nil 实例。谁能告诉我这里可能发生了什么?

编辑:包括我的 routes.rb 文件的内容

ProjectName::Application.routes.draw do

root :to => 'application#index'

end

最终编辑:

我让项目在不同的文件夹中运行,最近将它移了过来。事实证明,尽管加载样式表很好,但指南针还是抛出了一个错误(因此它被抛出到我的 body html 标记中)。我需要运行compass clean 然后compass compile,我想是为了让 Compass 知道新路径。感谢大家的帮助!

顺便说一句,这是我的 Gemfile

source :gemcutter

gem 'rails', '3.1.3'

gem 'sqlite3'

gem 'json'
gem 'rails_config', '0.2.4'
gem 'jammit', '0.6.5'
gem 'compass', '0.11.3'
gem 'haml', '3.1.2'

gem 'jquery-rails'

【问题讨论】:

  • 你没有另一个 Rails 实例在同一个端口上运行吗?
  • @MichałCzapko 此端口上没有运行其他 Rails 实例。
  • @Gazler 我编辑了我的原始问题以包含我的 routes.rb 文件的内容。
  • @ChristopherCortez 您是否更改了任何初始化程序?
  • @Gazler 不,我没有接触过初始化程序。

标签: ruby-on-rails ruby-on-rails-3 null nomethoderror


【解决方案1】:

我不认为在ApplicationController 中有任何显示方法是个好主意。尝试运行

rails g controller welcome

然后添加你的index 并通过

root :to => 'welcome#index`

编辑 发布您的Gemifile 后,我看到了问题所在。这是由于 Comapss 0.11 与 Rails 3.1 不兼容造成的。您必须使用 alpha 版本。将指南针版本更改为:

gem 'compass',      '~> 0.12.alpha.0'

【讨论】:

  • 会的。顺便说一句,我发现出了什么问题。我将编辑我的问题以包含答案(我无法回答我自己的问题)。
  • 虽然这是一个公平的观点,但肯定有可能有一条路由通过您的 ApplicationController,因此这不是问题的原因。
【解决方案2】:

也许它发生在 index.html.erb 文件中。请检查您是否在开发环境中运行,而不是“生产”。然后检查 development.log 文件。

【讨论】:

  • 我在开发环境中运行,日志看起来正常。此外,现在我的 index.html.erb 中没有嵌入的 ruby​​。 (还没有)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
相关资源
最近更新 更多