每次登录时,我收到电子邮件/密码无效的错误消息.
路线:
devise_for :users devise_scope :users do get '/users/sign_out' => 'devise/sessions#destroy',:as => :destroy_user_session post '/users/sign_in' => 'devise/sessions#create',:as => :user_session end resources :users
用户型号:
devise :database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable attr_accessor :password attr_accessible :first_name,:last_name,:email,:password,:password_confirmation,:gender,:remember_me
视图:
<% if signed_in?(:user) %> Hi <%= current_user.first_name %>. | Not you? <%= link_to 'Sign out',destroy_user_session_path,:method => :delete %> <% else %> <%= link_to 'Sign up',signup_path %> or <%= link_to 'Sign in',user_session_path,:method => :create %> <% end %>
我尝试改变路线:
get '/users/sign_in' => 'devise/sessions#new',:as => :new_user_session
并改变各自的路径,但这并没有改变任何事情.
我甚至更改了视图中的代码:
if signed_in?(:user)
至:
if user_signed_in?
并结合了这些事情,没有任何工作.
我也要求设计人员处理确认,我通过将生成的链接复制到浏览器,并且以用户身份第一次登录.它还允许我通过电子邮件确认链接更改密码,这也会在更改密码时签名.但一旦我退出登录,它告诉我,电子邮件/密码再次无效.
谁能帮忙?
我使用rails 3.0.7,devise 1.4.5,capybara 1.1.1,cucumber 1.0.6,MysqL2 0.2.6和rake 0.8.7,如果这有帮助任何人.
谢谢
编辑:
为了帮助未来的用户,实际上没有什么问题的宝石.工作正常问题在于我的数据库.由于某些原因,它正在从数据库中选择一个NULL电子邮件,而不是拉出我正在尝试登录的用户的信息.我正在找出如何解决这个问题,一旦我找出结果,它将更新.
解决方法
我在Devise的全新安装中遇到了类似的问题,但是我发现,如果我运行捆绑更新,然后重新启动我的开发服务器它可以工作.
起初我没有在development.log中看到数据库查询,但是一旦更新了我的Gemfile(确保我使用最新的Devise gem)并重新启动了服务器,我现在看到我的日志文件中的数据库查询,它的工作原理(神奇).
希望有帮助.
Btw,不知道这是否会帮助你…但这些是我的路线.路线
devise_for :users,:path_names => { :sign_up => "register",:sign_in => "login",:sign_out => "logout",:settings => "settings" } devise_scope :user do get "login",:to => "devise/sessions#new" get "register",:to => "devise/registrations#new" get "settings",:to => "devise/registrations#edit" get "logout",:to => "devise/sessions#destroy" end