我正在关注 this Ruby Railcasts episode进行一些简单的身份验证,当我导航到登录页面时,我收到错误 uninitialized constant Sessions
。我已经检查了我的类(class)并且名称是正确的,这似乎是大多数人报告的问题。知道这里会发生什么吗?
我的 Controller 文件的名字是sessions_controller.rb
,代码如下:
class SessionsController < ApplicationController
def new
end
def create
user = User.authenticate(params[:email], params[:password])
if user
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
routes.rb 文件:
Albumtracker::Application.routes.draw do
get "login" => "sessions/new", :as => "login"
get "logout" => "sessions/destroy", :as => "logout"
get "signup" => "users/new", :as => "sign_up"
root :to => 'users#new'
resources :users
resources :sessions
get "pages/index"
end
session /新 View 文件:
<h1>Log in</h1>
<%= form_tag sessions_path do %>
<p>
<%= label_tag :email %><br />
<%= text_field_tag :email, params[:email] %>
</p>
<p>
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</p>
<p class="button"><%= submit_tag "Log in" %></p>
<% end %>
最佳答案
您的路线有拼写错误。 /
在指定controller和action时应该是#
。您的路线应如下所示:
get "login" => "sessions#new", :as => "login"
get "logout" => "sessions#destroy", :as => "logout"
get "signup" => "users#new", :as => "sign_up"
当您在路由中使用 /
时,前面的部分与命名空间相匹配。因此,从 "sessions/new"
开始,路由器试图找到一个名为 Sessions::NewController
的 Controller 。由于命名空间 Sessions
在您的应用中不存在,因此您会收到未初始化的常量错误。
关于ruby-on-rails - 路由错误 : uninitialized constant Sessions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11680401/