2013-05-08 14 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