Lin*_*der 5 ruby ruby-on-rails 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'
Run Code Online (Sandbox Code Playgroud)
这是控制器,而行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
Run Code Online (Sandbox Code Playgroud)
这是完整的错误:
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)
Run Code Online (Sandbox Code Playgroud)
我正在使用Ruby 1.8.7和Rails 3.0.2.我也是,为了以防万一,尝试了Rails 3.0.7和3.0.0.
小智 9
你在任何情况下使用HAML吗?
我刚刚碰到了这个,我的同事(还没有在Stackoverflow上)发现它是由于视图模板中的多行注释
-#
= helper_method_1
= helper_method_2
Run Code Online (Sandbox Code Playgroud)
我通过将 HAML 版本从 3.1.x 更改为 3.0.24 解决了该问题。
我的新 Gemfile 看起来像这样。
gem "rails", "3.0.2"
gem "haml", "3.0.24"
gem "compass", "0.10.6"
Run Code Online (Sandbox Code Playgroud)