Недавно я обновил приложение Heroku от Cedar-10 до Cedar-14 без проблем (все еще использую ruby 1.9.3). Затем я попробовал обновить свое приложение, чтобы использовать ruby 2.0.0-p645 и нажать его на сервер heroku. Когда я это делаю, я больше не могу обращаться к своему приложению, и я получаю следующую ошибку в журналах:
2015-07-09T12:27:37.480991+00:00 app[web.1]:
2015-07-09T12:27:37.480996+00:00 app[web.1]: NoMethodError (undefined method `empty?' for nil:NilClass):
2015-07-09T12:27:37.480998+00:00 app[web.1]: app/controllers/wines_controller.rb:18:in `index'
2015-07-09T12:27:37.480999+00:00 app[web.1]:
2015-07-09T12:27:37.481001+00:00 app[web.1]:
2015-07-09T12:27:37.481462+00:00 app[web.1]: Processing by WinesController#index as HTML
2015-07-09T12:27:37.481465+00:00 app[web.1]: Completed 500 Internal Server Error in 100.1ms
Если я смотрю строку 18 контроллера wines_controller, у меня есть следующее:
respond_to do |format|
format.html
format.json {render json: @wines.as_json}
end
Я думал, что это что-то в моем index.html, поэтому я взял это обратно к этому;
%h1 Wines
Только с одной строкой в моем index.html.haml все еще была проблема.
Если я попытаюсь получить доступ к wines.json, это сработает и даст мне список моих вин. Запуск в моем ящике разработки с использованием 2.0.0 отлично работает, и все мои тесты проходят.
Обновление: добавьте контроллер и дополнительную информацию о index.html
Вот мой контроллер вин
def index
# Search via Ransack
@q = current_user.wines.includes(:wine_rack).unconsumed.order("LOWER(winery)").search(params[:q])
@wines = @q.result.page params[:page]
@total = @q.result.sum(:qty)
respond_to do |format|
format.html
format.json {render json: @wines.as_json}
end
end
В отношении моего файла index.html.haml я загрузил версию моего проекта, которая включала только одну строку;
%h1 Wines
В представлении нет петель, и я все еще получаю ошибку.
Строка 18 относится к следующей строке моего контроллера:
respond_to do |format|