2013-05-08 63 views
0

我正在用rails創建我的第一個獨立項目,用戶似乎無法登錄。在創建用戶後立即調用我的登錄方法,但是如果他們退出應用程序不會讓他們重新登錄這裏是形式Rails應用程序會話錯誤,無法登錄

這裏提交兆頭什麼,我得到的是錯誤信息

未定義的方法`[]」的零:NilClass

它說它是在會議控制器的第6行,但我認爲別的是錯的

會話控制器

class SessionsController < ApplicationController 
     def new 
     end 

    def create 
    user = User.find_by_email(params[:session][:email].downcase) 
    if user && user.authenticate(params[:session][:password]) 
     sign_in user 
     redirect_to user 
    else 
     flash.now[:error] = 'Invalid email/password combination' 
     render 'new' 
    end 
    end 


def destroy 
    sign_out 
    redirect_to root_path 
end 

end 

登錄形式

<h1>Sign in</h1> 
    <br /> 

    <%= form_tag sessions_path do %> 

     <%= label_tag :email %><br /> 
     <%= text_field_tag :email %><br /> 

     <%= label_tag :password %><br /> 
     <%= text_field_tag :password %><br /> 

     <%= submit_tag "Sign in", class: "button" %> 
    <% end %> 

    <p>New user? <%= link_to "Sign up now!", signup_path %></p> 

路線

Blog::Application.routes.draw do 
    get "sessions/new" 

    get "users/new" 

    resources :posts 
    resources :static_pages 
    resources :users 
    resources :sessions 



    root to: 'posts#index' 

    match '/signin', to: 'sessions#new' 
    match '/signup', to: 'users#new' 
    match '/signout', to: 'sessions#destroy', via: :delete 

    match '/about', to: 'static_pages#about' 
    match '/projects', to: 'static_pages#projects' 

end 

而且這裏是耙:路線

sessions_new GET /sessions/new(.:format)   sessions#new 
     users_new GET /users/new(.:format)    users#new 
      posts GET /posts(.:format)     posts#index 
       POST /posts(.:format)     posts#create 
     new_post GET /posts/new(.:format)    posts#new 
     edit_post GET /posts/:id/edit(.:format)  posts#edit 
      post GET /posts/:id(.:format)    posts#show 
       PUT /posts/:id(.:format)    posts#update 
       DELETE /posts/:id(.:format)    posts#destroy 
    static_pages GET /static_pages(.:format)   static_pages#index 
       POST /static_pages(.:format)   static_pages#create 
new_static_page GET /static_pages/new(.:format)  static_pages#new 
edit_static_page GET /static_pages/:id/edit(.:format) static_pages#edit 
    static_page GET /static_pages/:id(.:format)  static_pages#show 
       PUT /static_pages/:id(.:format)  static_pages#update 
       DELETE /static_pages/:id(.:format)  static_pages#destroy 
      users GET /users(.:format)     users#index 
       POST /users(.:format)     users#create 
     new_user GET /users/new(.:format)    users#new 
     edit_user GET /users/:id/edit(.:format)  users#edit 
      user GET /users/:id(.:format)    users#show 
       PUT /users/:id(.:format)    users#update 
       DELETE /users/:id(.:format)    users#destroy 
      root  /        posts#index 
      signin  /signin(.:format)    sessions#new 
      signup  /signup(.:format)    users#new 
     signout DELETE /signout(.:format)    sessions#destroy 
      about  /about(.:format)     static_pages#about 
     projects  /projects(.:format)    static_pages#projects 

會議助手

module SessionsHelper 

    def sign_in(user) 
     cookies.permanent[:remember_token] = user.remember_token 
     self.current_user = user 
    end 

    def current_user=(user) 
     @current_user = user 
    end 

    def current_user 
     @current_user ||= User.find_by_remember_token(cookies[:remember_token]) 
    end 

    def signed_in? 
     !current_user.nil? 
    end 

    def sign_out 
     self.current_user = nil 
     cookies.delete(:remember_token) 
    end 

end 
+1

您可以查看日誌並告訴我們該發佈什麼內容嗎? 我懷疑它不是通過'params [:session] [:email]'而是'params [:email]' – 2013-05-08 02:53:43

+0

你是對的,這就是問題所在。謝謝! – Michael 2013-05-08 03:22:43

回答

0

根據您的視圖的標記,它看起來像你應該尋找..

PARAMS:不是PARAMS .downcase,[:會議] [:郵箱] .downcase [郵件]。

表單標記沒有被作用於會話對象,所以參數的匹配不正確。把會話放在參數代碼中,你應該沒問題。

+0

修好了!好眼睛,謝謝! – Michael 2013-05-08 03:21:45