我目前正在测试我的Devise实现 - 除了我的注册表单外,一切正常。
Flash消息错误:
电子邮件或密码无效。
然后我会转到登录表单。
不知道我哪里出错了。
注册表单:
<h2>Sign Up</h2>
<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'form-vertical' }) do |f| %>
<%= f.error_notification %>
<%= f.input :name, :autofocus => true %>
<%= f.input :email, :required => true %>
<%= f.input :password, :required => true %>
<%= f.input :password_confirmation, :required => true %>
<%= f.button :submit, 'Sign up', :class => 'button' %>
<% end %>
<% render 'devise/shared/links' %>
路线:
authenticated :user do
root :to => 'home#index'
end
devise_for :users
resources :users
root :to => 'home#index'
resources :songs
get 'home/index'
match 'home/about', :to => 'home#about'
match 'home/contact', :to => 'home#contact'
Rails服务器:
Started POST "/users/sign_in" for 127.0.0.1 at 2013-03-01 16:42:47 +1000
Processing by Devise::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"DxwF+dMC//5UIX5beKhzaBLjnB2xaJe7pQb/C3xNK1k=", "user"=>{"name"=>"test", "email"=>"asdfas@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = 'asdfas@gmail.com' LIMIT 1
Completed 401 Unauthorized in 2ms
Processing by Devise::SessionsController#new as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"DxwF+dMC//5UIX5beKhzaBLjnB2xaJe7pQb/C3xNK1k=", "user"=>{"name"=>"test", "email"=>"asdfas@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
Rendered /Users/thmsmxwll/.rvm/gems/ruby-1.9.3-p194/gems/devise-2.2.3/app/views/devise/shared/_links.erb (0.4ms)
Rendered devise/sessions/new.html.erb within layouts/application (7.5ms)
Rendered layouts/_navigation.html.erb (0.5ms)
Rendered layouts/_messages.html.erb (0.1ms)
Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 104ms (Views: 19.1ms | ActiveRecord: 0.0ms)
答案 0 :(得分:1)
这是由于表单助手中的 url 错误,只需将其替换为,
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f| %>
注册时,url需要是registration_path而不是session_path。
答案 1 :(得分:0)
您的注册路径错误。
您正在进行注册,但您的rails服务器的处理是:
Processing by Devise::SessionsController#create as HTML
上面一行表明设计试图为用户创建登录会话而不是注册。
所以rails正在寻找email" = 'asdfas@gmail.com
行,但是你的数据库中没有,因为你正在注册。