NameError в сеансах # новый - PullRequest
1 голос
/ 28 июля 2011

Я получаю эту ошибку : undefined local variable or method session_path 'для # <#: 0x2db44c8> when I go to localhost: 3000 / login`, что для меня не имеет большого смысла видеть кодточно так же, как и в предыдущем приложении, где оно работает.

Вот код соответствующих файлов.


rout.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' 


session_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 / session / 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 %>

1 Ответ

7 голосов
/ 28 июля 2011

У вас не определено 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...