0
跟隨Hartl的railtutorial。當我嘗試登錄時,它會將我帶到正確的頁面,但是「成功登錄!」不會在界面上閃爍。此外,當我嘗試退出時,出現路由錯誤:No route matches [GET] "/sessions/1"
。RailsTutorial Sessions:登錄不成功並註銷導致路由錯誤
任何幫助,將不勝感激!
這裏是我的sessions_controller.rb:
類SessionsController < ApplicationController的
def new
@title = "Log 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
flash[:success] = "Successful login!"
sign_in user
redirect_back_or user
end
end
def destroy
sign_out
redirect_to root_path
end
end
這裏是我的routes.rb:
SampleApp::Application.routes.draw do
#resources :users this is the line I removed to get my code to work
resource :user #this is the lined I added to get my code to work
resources :sessions, :only => [:new, :create, :destroy]
match '/sessions', :to => 'users#show'
match '/signup', :to => 'users#new'
match '/login', :to => 'sessions#new'
match '/logout', :to => 'sessions#destroy'
root :to => 'pages#home'
更改resources :users
到resource :user
似乎讓我「登錄「和」退出「,除了在用戶界面上沒有出現閃存成功。這導致我相信我的創建方法存在錯誤。
這裏是我的sessions_helper.rb:
module SessionsHelper
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def current_user?(user)
user == current_user
end
def sign_out
cookies.delete(:remember_token)
self.current_user = nil
end
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
clear_return_to
end
private
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
def store_location
session[:return_to] = request.fullpath
end
def clear_return_to
session[:return_to] = nil
end
end
編輯:解決方案張貼在代碼。
我會嘗試。我正在使用銷燬方法。我現在會發佈會話幫手。閃光燈[:成功]閃光燈 – Huy 2012-03-07 19:59:56
!你知道爲什麼我必須使用'resource:user'而不是'resources:users'嗎? – Huy 2012-03-07 20:03:40
是不是隻爲視圖幫手?我想你應該把你的所有方法移到應用程序控制器上...... – klump 2012-03-07 20:04:03