Я только изучаю RoR и столкнулся с моей первой настоящей ошибкой. Был бы очень признателен за некоторые рекомендации с ним. Я дошел до того, чтобы создать функцию входа / выхода пользователя для сайта, который я создаю, который будет поддерживаться с помощью сессий. Когда форма входа отправляется, она отправляется в контроллер сессий, который вызывает метод create. Когда он делает это, он отображает эту ошибку:
NoMethodError in
SessionsController # создать
У вас есть нулевой объект, когда вы этого не сделали
ожидайте этого! Вы могли ожидать
экземпляр ActiveRecord :: Base.
произошла ошибка при оценке nil. []
Вот код для метода создания:
33 def create
34 user = User.authenticate(params[:session][:email],
35 params[:session][:password])
36 if user.nil?
37 flash.now[:error] = "Invalid email/password combination."
38 @title = "Sign in"
39 render 'new'
40 else
41 sign_in user
42 redirect_back_or user
43 end
44 end
Трассировка приложения говорит об ошибке на
app / controllers / session_controller.rb: 34: в `create '
Так что, похоже, проблема в методе аутентификации. Это метод класса, определенный для моего пользовательского объекта. Странно то, что я протестировал метод в консоли rails, и он работает нормально. Ниже приведен полный след. Опять был бы очень признателен за помощь с этим. Спасибо тебе.
Трассировка:
приложение / контроллеры / sessions_controller.rb: 34: в
create' actionpack (3.0.4)
lib/action_controller/metal/implicit_render.rb:4:in
send_action 'actionpack (3.0.4)
Библиотека / abstract_controller / base.rb: 150: в
process_action' actionpack (3.0.4)
lib/action_controller/metal/rendering.rb:11:in
process_action 'actionpack (3.0.4)
Библиотека / abstract_controller / callbacks.rb: 18: в
block in process_action'
activesupport (3.0.4)
lib/active_support/callbacks.rb:435:in
пробег _4224187041876590211__process_action_ 3718750575726612430 _callbacks'
Активная поддержка (3.0.4)
Библиотека / active_support / callbacks.rb: 409: в
_run_process_action_callbacks'
activesupport (3.0.4)
lib/active_support/callbacks.rb:93:in
run_callbacks 'actionpack (3.0.4)
Библиотека / abstract_controller / callbacks.rb: 17: в
process_action' actionpack (3.0.4)
lib/action_controller/metal/instrumentation.rb:30:in
блок в process_action '
Активная поддержка (3.0.4)
Библиотека / active_support / notifications.rb: 52: в
block in instrument' activesupport
(3.0.4)
lib/active_support/notifications/instrumenter.rb:21:in
инструмент 'активная поддержка (3.0.4)
Библиотека / active_support / notifications.rb: 52: в
instrument' actionpack (3.0.4)
lib/action_controller/metal/instrumentation.rb:29:in
process_action 'actionpack (3.0.4)
Библиотека / action_controller / металл / rescue.rb: 17: в
process_action' actionpack (3.0.4)
lib/abstract_controller/base.rb:119:in
process 'actionpack (3.0.4)
Библиотека / abstract_controller / rendering.rb: 41: в
process' actionpack (3.0.4)
lib/action_controller/metal.rb:138:in
рассылка 'actionpack (3.0.4)
Библиотека / action_controller / металл / rack_delegation.rb: 14: в
dispatch' actionpack (3.0.4)
lib/action_controller/metal.rb:178:in
блок в действии 'actionpack (3.0.4)
Библиотека / action_dispatch / маршрутизации / route_set.rb: 62: в
call' actionpack (3.0.4)
lib/action_dispatch/routing/route_set.rb:62:in
рассылка 'actionpack (3.0.4)
Библиотека / action_dispatch / маршрутизации / route_set.rb: 27: в
call' rack-mount (0.6.14)
lib/rack/mount/route_set.rb:148:in
блок в вызове 'стоечный (0.6.14)
Библиотека / стойка / крепление / code_generation.rb: 93: в
block in recognize' rack-mount
(0.6.14)
lib/rack/mount/code_generation.rb:68:in
optimized_each 'для монтажа в стойку (0.6.14)
Библиотека / стойка / крепление / code_generation.rb: 92: в
recognize' rack-mount (0.6.14)
lib/rack/mount/route_set.rb:139:in
call 'actionpack (3.0.4)
Библиотека / action_dispatch / маршрутизации / route_set.rb: 492: в
call' actionpack (3.0.4)
lib/action_dispatch/middleware/best_standards_support.rb:17:in
call 'actionpack (3.0.4)
Библиотека / action_dispatch / промежуточный слой / head.rb: 14: в
call' rack (1.2.2)
lib/rack/methodoverride.rb:24:in
call 'actionpack (3.0.4)
Библиотека / action_dispatch / промежуточного программного обеспечения / params_parser.rb: 21: в
call' actionpack (3.0.4)
lib/action_dispatch/middleware/flash.rb:182:in
call 'actionpack (3.0.4)
Библиотека / action_dispatch / промежуточная / сессия / abstract_store.rb: 149: в
call' actionpack (3.0.4)
lib/action_dispatch/middleware/cookies.rb:302:in
call 'activerecord (3.0.4)
Библиотека / active_record / query_cache.rb: 32: в
block in call' activerecord (3.0.4)
lib/active_record/connection_adapters/abstract/query_cache.rb:28:in
кэш 'activerecord (3.0.4)
Библиотека / active_record / query_cache.rb: 12: в
cache' activerecord (3.0.4)
lib/active_record/query_cache.rb:31:in
call 'activerecord (3.0.4)
Библиотека / active_record / connection_adapters / абстрактные / connection_pool.rb: 354: в
call' actionpack (3.0.4)
lib/action_dispatch/middleware/callbacks.rb:46:in
блок в call 'activesupport (3.0.4)
Библиотека / active_support / callbacks.rb: 415: в
_run_call_callbacks' actionpack
(3.0.4)
lib/action_dispatch/middleware/callbacks.rb:44:in
стойка вызова (1.2.2)
lib / rack / sendfile.rb: 107: в call'
actionpack (3.0.4)
lib/action_dispatch/middleware/remote_ip.rb:48:in
call 'actionpack (3.0.4)
Библиотека / action_dispatch / промежуточный слой / show_exceptions.rb: 47: в
call' railties (3.0.4)
lib/rails/rack/logger.rb:13:in
вызов»
rack (1.2.2) lib / rack / runtime.rb: 17: in
call' activesupport (3.0.4)
lib/active_support/cache/strategy/local_cache.rb:72:in
стойка вызова (1.2.2)
lib / rack / lock.rb: 11: в block in call'
<internal:prelude>:10:in
синхронизировать '
rack (1.2.2) lib / rack / lock.rb: 11: в
call' actionpack (3.0.4)
lib/action_dispatch/middleware/static.rb:30:in
call 'railties (3.0.4)
lib / rails / application.rb: 168: в call'
railties (3.0.4)
lib/rails/application.rb:77:in
method_missing 'railties (3.0.4)
Библиотека / рельсы / стойки / log_tailer.rb: 14: в
call' rack (1.2.2)
lib/rack/content_length.rb:13:in
стойка вызова (1.2.2)
Библиотека / стойка / обработчик / webrick.rb: 52: в
service'
/Users/USERNAME_REMOVED/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/httpserver.rb:111:in
сервис»
/Users/USERNAME_REMOVED/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/httpserver.rb:70:in
run'
/Users/USERNAME_REMOVED/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/server.rb:183:in
блок в start_thread '