Rails 4 + Devise DB登录:ActionDispatch :: Request的NoMethodError“login”

Rails 4 + Devise DB Sign In: NoMethodError `login' for ActionDispatch::Request

我有我认为与此用户相同的问题。 在配置为允许基于用户名的登录之前,我还看到了"email"而不是"login"的错误。

我可以创建一个用户。 用户无法登录。以下是config / initializers / devise.rb中的一些关键变量:

1
2
3
config.authentication_keys = [ :login ]
config.request_keys = [ :login ]
config.http_authenticatable = [false]

这是来自controllers / sessions / new.html.erb的表单

1
2
3
4
5
6
7
8
9
10
11
12
13
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
  <%= f.label :login %><br />
  <%= f.email_field :login, autofocus: true %>

  <%= f.label :password %><br />
  <%= f.password_field :password, autocomplete:"off" %>

  <% if devise_mapping.rememberable? -%>
     <%= f.check_box :remember_me %> <%= f.label :remember_me %>
 <% end -%>

 <%= f.submit"Log in" %>
 <% end %>

以下是提交的参数:

1
2
3
4
5
6
{"utf8"=>"?",
   "authenticity_token"=>"yada",
   "user"=>{"login"=>"[email protected]",
     "password"=>"[FILTERED]",
     "remember_me"=>"0"},
   "commit"=>"Log in"}

rails 4.1,设计3.4

回溯:

NoMethodError (undefined method login' for #):
devise (3.4.0) lib/devise/strategies/authenticatable.rb:148:in
block in request_values'
devise (3.4.0) lib/devise/strategies/authenticatable.rb:148:in map'
devise (3.4.0) lib/devise/strategies/authenticatable.rb:148:in
request_values'
devise (3.4.0) lib/devise/strategies/authenticatable.rb:128:in with_authentication_hash'
devise (3.4.0) lib/devise/strategies/authenticatable.rb:77:in
valid_for_params_auth?'
devise (3.4.0) lib/devise/strategies/authenticatable.rb:16:in valid?'
warden (1.2.3) lib/warden/proxy.rb:351:in
block in _run_strategies_for'
warden (1.2.3) lib/warden/proxy.rb:349:in each'
warden (1.2.3) lib/warden/proxy.rb:349:in
_run_strategies_for'
warden (1.2.3) lib/warden/proxy.rb:319:in _perform_authentication'
warden (1.2.3) lib/warden/proxy.rb:127:in
authenticate!'
devise (3.4.0) app/controllers/devise/sessions_controller.rb:16:in create'
actionpack (4.1.0) lib/action_controller/metal/implicit_render.rb:4:in
send_action'
actionpack (4.1.0) lib/abstract_controller/base.rb:189:in process_action'
actionpack (4.1.0) lib/action_controller/metal/rendering.rb:10:in
process_action'
actionpack (4.1.0) lib/abstract_controller/callbacks.rb:20:in block in process_action'
activesupport (4.1.0) lib/active_support/callbacks.rb:113:in
call'
activesupport (4.1.0) lib/active_support/callbacks.rb:113:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in
block in halting_and_conditional'
activesupport (4.1.0) lib/active_support/callbacks.rb:229:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:229:in
block in halting'
activesupport (4.1.0) lib/active_support/callbacks.rb:166:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:166:in
block in halting'
activesupport (4.1.0) lib/active_support/callbacks.rb:166:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:166:in
block in halting'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in
block in halting_and_conditional'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in
block in halting_and_conditional'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in
block in halting_and_conditional'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:149:in
block in halting_and_conditional'
activesupport (4.1.0) lib/active_support/callbacks.rb:86:in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:86:in
run_callbacks'
actionpack (4.1.0) lib/abstract_controller/callbacks.rb:19:in process_action'
actionpack (4.1.0) lib/action_controller/metal/rescue.rb:29:in
process_action'
actionpack (4.1.0) lib/action_controller/metal/instrumentation.rb:31:in block in process_action'
activesupport (4.1.0) lib/active_support/notifications.rb:159:in
block in instrument'
activesupport (4.1.0) lib/active_support/notifications/instrumenter.rb:20:in instrument'
activesupport (4.1.0) lib/active_support/notifications.rb:159:in
instrument'
actionpack (4.1.0) lib/action_controller/metal/instrumentation.rb:30:in process_action'
actionpack (4.1.0) lib/action_controller/metal/params_wrapper.rb:250:in
process_action'
activerecord (4.1.0) lib/active_record/railties/controller_runtime.rb:18:in process_action'
actionpack (4.1.0) lib/abstract_controller/base.rb:136:in
process'
actionview (4.1.0) lib/action_view/rendering.rb:30:in process'
actionpack (4.1.0) lib/action_controller/metal.rb:195:in
dispatch'
actionpack (4.1.0) lib/action_controller/metal/rack_delegation.rb:13:in dispatch'
actionpack (4.1.0) lib/action_controller/metal.rb:231:in
block in action'
actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:80:in call'
actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:80:in
dispatch'
actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:48:in call'
actionpack (4.1.0) lib/action_dispatch/routing/mapper.rb:45:in
call'
actionpack (4.1.0) lib/action_dispatch/journey/router.rb:71:in block in call'
actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in
each'
actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in call'
actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:676:in
call'
warden (1.2.3) lib/warden/manager.rb:35:in block in call'
warden (1.2.3) lib/warden/manager.rb:34:in
catch'
warden (1.2.3) lib/warden/manager.rb:34:in call'
rack (1.5.2) lib/rack/etag.rb:23:in
call'
rack (1.5.2) lib/rack/conditionalget.rb:35:in call'
rack (1.5.2) lib/rack/head.rb:11:in
call'
actionpack (4.1.0) lib/action_dispatch/middleware/params_parser.rb:27:in call'
actionpack (4.1.0) lib/action_dispatch/middleware/flash.rb:254:in
call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in
call'
actionpack (4.1.0) lib/action_dispatch/middleware/cookies.rb:560:in call'
activerecord (4.1.0) lib/active_record/query_cache.rb:36:in
call'
activerecord (4.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in call'
actionpack (4.1.0) lib/action_dispatch/middleware/callbacks.rb:29:in
block in call'
activesupport (4.1.0) lib/active_support/callbacks.rb:82:in run_callbacks'
actionpack (4.1.0) lib/action_dispatch/middleware/callbacks.rb:27:in
call'
actionpack (4.1.0) lib/action_dispatch/middleware/reloader.rb:73:in call'
actionpack (4.1.0) lib/action_dispatch/middleware/remote_ip.rb:76:in
call'
actionpack (4.1.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call'
actionpack (4.1.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in
call'
railties (4.1.0) lib/rails/rack/logger.rb:38:in call_app'
railties (4.1.0) lib/rails/rack/logger.rb:20:in
block in call'
activesupport (4.1.0) lib/active_support/tagged_logging.rb:68:in block in tagged'
activesupport (4.1.0) lib/active_support/tagged_logging.rb:26:in
tagged'
activesupport (4.1.0) lib/active_support/tagged_logging.rb:68:in tagged'
railties (4.1.0) lib/rails/rack/logger.rb:20:in
call'
actionpack (4.1.0) lib/action_dispatch/middleware/request_id.rb:21:in call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in
call'
rack (1.5.2) lib/rack/runtime.rb:17:in call'
activesupport (4.1.0) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in
call'
rack (1.5.2) lib/rack/lock.rb:17:in call'
actionpack (4.1.0) lib/action_dispatch/middleware/static.rb:64:in
call'
rack (1.5.2) lib/rack/sendfile.rb:112:in call'
railties (4.1.0) lib/rails/engine.rb:514:in
call'
railties (4.1.0) lib/rails/application.rb:144:in call'
rack (1.5.2) lib/rack/lock.rb:17:in
call'
rack (1.5.2) lib/rack/content_length.rb:14:in call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in
service'
/home/eric/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service'
/home/eric/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/webrick/httpserver.rb:94:in
run'
/home/eric/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

有任何想法吗?


您使用名为login的虚拟属性作为身份验证密钥。 缺少的是覆盖Devise的find_for_database_authentication

看这里