nil的未定义方法`parent':NilClass

时间:2011-05-06 00:22:04

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

我使用Rails 3.0.2发现了这个奇怪的错误。

ActionView::Template::Error (undefined method `parent' for nil:NilClass):
app/controllers/channels_controller.rb:19:in `index'

这是控制器,行19respond_with(@channels)块。

我从哪里开始搜索错误?

class ChannelsController < ApplicationController
  before_filter :set_default_client
  respond_to :html, :xml

  def index
    if params[:cache_set]
      @channels = Channel.active.find_all_by_id(params[:cache_set])
    else
      @channels = Channel.active.find_all_by_id(cookies[:channels].split(','))
    end

    respond_with(@channels)
  end
end

这是完整的错误:

ActionView::Template::Error (undefined method `parent' for nil:NilClass):
  app/controllers/channels_controller.rb:19:in `index'

Rendered /Users/linus/.rvm/gems/ruby-1.8.7-p330/gems/actionpack-3.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.3ms)
Rendered /Users/linus/.rvm/gems/ruby-1.8.7-p330/gems/actionpack-3.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (19.8ms)
Rendered /Users/linus/.rvm/gems/ruby-1.8.7-p330/gems/actionpack-3.0.2/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (28.6ms)

我正在使用Ruby 1.8.7和Rails 3.0.2。 我也是,以防万一,试过Rails 3.0.7和3.0.0。

3 个答案:

答案 0 :(得分:9)

你在任何情况下使用HAML吗?

我刚刚碰到了这个,我的同事(还没有在Stackoverflow上)发现它是由于视图模板中的多行注释所致

-#
  = helper_method_1
  = helper_method_2

答案 1 :(得分:2)

我通过将HAML版本从3.1.x更改为3.0.24来解决了这个问题。

我的新Gemfile看起来像这样。

gem "rails", "3.0.2"
gem "haml", "3.0.24"
gem "compass", "0.10.6"

答案 2 :(得分:0)

看起来HAML-edge已经解决了这个问题。 我希望3.1.1之后的下一版HAML可以解决这个问题。