Я обновлял свое приложение с Rails 2.3.8 до Rails 3.
После выполнения всех основных задач (конфиги, маршруты и новый AR API, замены Authlogic на Devise) и получениянекоторые в основном статические страницы отображаются нормально. Я получаю сообщение об ошибке на остальной части моего сайта:
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.any?
Эта ошибка всегда появляется, когда я впервые ссылаюсь на SomeModel
.Например, в моем news#index
:
@news_story = NewsStory.new # gets called from before_filter
Полная трассировка стека приведена ниже.Трассировка, кажется, указывает на то, что модель в моем app/models/news_story.rb
не загружается.
Я боролся с этим целый день.Кто-нибудь имеет представление о том, что происходит?
# stack trace:
activesupport (3.0.0) lib/active_support/dependencies.rb:497:in `load_missing_constant'
activesupport (3.0.0) lib/active_support/dependencies.rb:183:in `block in const_missing'
activesupport (3.0.0) lib/active_support/dependencies.rb:181:in `each'
activesupport (3.0.0) lib/active_support/dependencies.rb:181:in `const_missing'
app/controllers/news_controller.rb:82:in `new_post'
activesupport (3.0.0) lib/active_support/callbacks.rb:451:in `_run__810448074__process_action__85542351__callbacks'
activesupport (3.0.0) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks'
activesupport (3.0.0) lib/active_support/callbacks.rb:93:in `run_callbacks'
actionpack (3.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
...
Действие контроллера:
class NewsController < ApplicationController
before_filter :new_post_from_params, :only => :create
before_filter :new_post, :only => [:index, :new]
before_filter :find_post, :except => [:index, :create, :new]
filter_access_to :all, :attribute_check => true
def index
@user = current_user
@news = NewsStory.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @user.news }
end
end
#...
private
def new_post_from_params
@news_story = NewsStory.new(params[:news_story])
end
def new_post
@news_story = NewsStory.new
end
def find_post
@news_story = NewsStory.find(params[:id])
end
end
Дополнительная информация: