簡體   English   中英

會話中的NameError#new

[英]NameError in Sessions#new

我收到此錯誤when I go to localhost:3000 / login when I go to ,#<#:0x2db44c8>的undefined local variable or method session_path'對when I go to來說沒有太大意義,因為看到的代碼與先前的代碼完全一樣工作的應用程序。

這是相關文件的代碼。


routes.rb

get 'register' => 'users#new', :as => 'register'
get 'login' => 'sessions#new', :as => 'login'
get 'logout' => 'sessions#destroy', :as => 'logout' 

resources :users, :path => '/'

root :to => 'users#index' 
match '/:id' => 'users#show' 


sessions_controller.rb

class SessionsController < ApplicationController
def new
end

def create
    user = User.find_by_email(params[:email])
    if user && user.authenticate(params[:password])
        session[:user_id] = user.id
        redirect_to root_url, :notice => 'Logged in!'
    else
        flash.now.alert = 'Invalid email or password'
        render 'new'
    end
end

def destroy
    session[:user_id] = nil
    redirect_to root_url, :notice => 'Logged out!'
end
end


views / sessions / new.html.erb

<h1>Log in</h1>

<%= form_tag sessions_path do %>
<div class="field"></div>
    <%= label_tag :email %>
    <%= text_field_tag :email, params[:email] %>
</div>
<div class="field"></div>
    <%= label_tag :password %>
    <%= text_field_tag :password %>
</div>
<div class="actions"><%= submit_tag "Log in"%></div>
<% end %>

你沒有sessions_path定義-用rake routes來驗證。 要使用sessions_path方法,您的路由規范中將需要具有resources :sessions

與您的SessionsController ,您的路由文件應類似於...

resources :sessions, :only => [:create]
get 'register' => 'users#new', :as => 'register'
get 'login' => 'sessions#new', :as => 'login'
get 'logout' => 'sessions#destroy', :as => 'logout' 

resources :users, :path => '/'

root :to => 'users#index' 
match '/:id' => 'users#show'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM