Ruby 于 Rails 为什么我无法登录?
Ruby on Rails Why can I not log in?
在我的 Ruby on Rails 应用程序中,我这样做是为了让用户可以注册,但是一旦服务器停止并且我再次加载页面,他们就没有登录(这很好) 但当我单击 "Log In" 时,出现以下错误:
NameError in Sessions#new
Showing C:/Sites/Thor/UnderConstruction/ThorCinema/app/views/sessions/new.html.erb where line #2 raised:
undefined local variable or method `sessions_create_path' for #<#<Class:0x6829bd8>:0x57ce460>
sessions_create_path
在views/session/new。html.erb:
<div class="form1">
<%= form_tag sessions_create_path, :method => :get do %>
<fieldset>
<legend>Please Log In</legend>
<div>
<%= label_tag :name,'Name:' %>
<%= text_field_tag :name, params[:name] , :autofocus => true %>
</div>
<div>
<%= label_tag :password, 'Password:' %>
<%= password_field_tag :password, params[:password] %>
</div>
<div>
</br>
<%= submit_tag "Login" %>
</div>
</fieldset>
<% end %> <!-- form_tag -->
</br>
<%= link_to 'Back', :back %>
并且 sessions_controller 创建方法是:
def create
user = User.find_by name: params[:name]
if user and user.authenticate params[:password]
# 'logging in' is performed by saving a user's id in the session variable
session[:user_id] = user.id
# redirect to last page or root_path (products/index.html.erb')
redirect_to root_path
else
flash.now.alert = "Invalid user/password"
render :new
end
end
登录按钮在应用程序中。html.erb:
<%= link_to "Log In", login_path %>
Routes.rb:
controller :sessions do
get 'login' => :new
post 'login' => :create
get 'logout' => :destroy
end
resources :users
get 'films/index'
get 'categories/index'
get 'certificates/index'
resources :films
resources :categories
resources :certificates
resources :showings
root 'films#index'
post 'films/search', to: 'films#search'
post 'films/display_products_by_genre', :to => 'films#display_products_by_genre'
get 'films/display_products_by_genre', :to => 'films#display_products_by_genre'
post 'films/multi_find', :to => 'films#multi_find'
get 'films/multi_find', :to => 'films#multi_find'
match '*a', to: 'errors#routing', via: [:get, :post]
谁能告诉我为什么登录不起作用?
尝试使用此注销:<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
然后点击登录按钮。
在我的 Ruby on Rails 应用程序中,我这样做是为了让用户可以注册,但是一旦服务器停止并且我再次加载页面,他们就没有登录(这很好) 但当我单击 "Log In" 时,出现以下错误:
NameError in Sessions#new
Showing C:/Sites/Thor/UnderConstruction/ThorCinema/app/views/sessions/new.html.erb where line #2 raised:
undefined local variable or method `sessions_create_path' for #<#<Class:0x6829bd8>:0x57ce460>
sessions_create_path
在views/session/new。html.erb:
<div class="form1">
<%= form_tag sessions_create_path, :method => :get do %>
<fieldset>
<legend>Please Log In</legend>
<div>
<%= label_tag :name,'Name:' %>
<%= text_field_tag :name, params[:name] , :autofocus => true %>
</div>
<div>
<%= label_tag :password, 'Password:' %>
<%= password_field_tag :password, params[:password] %>
</div>
<div>
</br>
<%= submit_tag "Login" %>
</div>
</fieldset>
<% end %> <!-- form_tag -->
</br>
<%= link_to 'Back', :back %>
并且 sessions_controller 创建方法是:
def create
user = User.find_by name: params[:name]
if user and user.authenticate params[:password]
# 'logging in' is performed by saving a user's id in the session variable
session[:user_id] = user.id
# redirect to last page or root_path (products/index.html.erb')
redirect_to root_path
else
flash.now.alert = "Invalid user/password"
render :new
end
end
登录按钮在应用程序中。html.erb:
<%= link_to "Log In", login_path %>
Routes.rb:
controller :sessions do
get 'login' => :new
post 'login' => :create
get 'logout' => :destroy
end
resources :users
get 'films/index'
get 'categories/index'
get 'certificates/index'
resources :films
resources :categories
resources :certificates
resources :showings
root 'films#index'
post 'films/search', to: 'films#search'
post 'films/display_products_by_genre', :to => 'films#display_products_by_genre'
get 'films/display_products_by_genre', :to => 'films#display_products_by_genre'
post 'films/multi_find', :to => 'films#multi_find'
get 'films/multi_find', :to => 'films#multi_find'
match '*a', to: 'errors#routing', via: [:get, :post]
谁能告诉我为什么登录不起作用?
尝试使用此注销:<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
然后点击登录按钮。