登录功能不起作用 [英] Sign in function not working
本文介绍了登录功能不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了一个应用,允许用户注册、登录和退出(如果你愿意,我自己从头开始设计).
I've built an app that allows users to sign up, sign in, and sign out (my own devise from the ground up, if you will).
该应用允许用户注册,但在尝试登录时出现以下错误:
The app allows users to sign up, but when trying to sign in I get the following error:
//(不用说我处于停滞状态,谁能想到这是他们自己的天才)
// (needless to say I'm at a stand still, who ever can figure this out is a genius in they're own right)
undefined method `-' for nil:NilClass
Rails.root: /Users/user/Sites/rails_projects/sample_app1
app/controllers/sessions_controller.rb:11:in `create'
请求
参数:
{"utf8"=>"✓",
"authenticity_token"=>"/SEaqnrMf5X0pd4FVWbu8uWVAjTNw4LPKiXg+8Hl0PQ=",
"session"=>{"email"=>"Anthonypane@example.com",
"password"=>"[FILTERED]"},
"commit"=>"Sign in"}
这是我的 Session_Controller 内容:
Here are my Session_Controller Contents:
class SessionsController < ApplicationController
def new
@title = "Sign in"
end
def create
user = User.authenticate(params[:session][:email],
params[:session][:password])
if user.nil?
flash.now[:error] = "Invalid email/password combination."
@title - "Sign In"
render 'new'
else
sign_in user
redirect_to user
end
end
def destroy
sign_out
redirect_to root_path
end
end
Users_Controller 内容
Users_Controller contents
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@title = @user.name
end
def new
@user = User.new
@title = "Sign up"
end
def create
@user = User.new(params[:user])
if @user.save
sign_in @user
redirect_to @user, :flash => {:success => "Welcome to the Fun House!"}
else
@title = "Sign up"
render 'new'
end
end
end
Sessions_helper 内容
Sessions_helper contents
module SessionsHelper
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
current_user = user
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def signed_in?
!current_user.nil?
end
def sign_out
cookies.delete(:remember_token)
self.current_user = nil
end
private
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
end
最后是 Users_helper 内容:
And Lastly Users_helper contents:
module UsersHelper
def gravatar_for(user, options = { :size => 50})
gravatar_image_tag(user.email.downcase, :alt => user.name,
:class => 'gravatar',
:gravatar => options)
end
end
推荐答案
我认为这一行:
@title - "Sign In"
应该是这样的:
@title = "Sign In"
这篇关于登录功能不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文