我使用Rails 3.0.2发现了这个奇怪的错误。
ActionView::Template::Error (undefined method `parent' for nil:NilClass):
app/controllers/channels_controller.rb:19:in `index'
这是控制器,行19
是respond_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。
答案 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可以解决这个问题。