【发布时间】:2011-07-28 03:24:25
【问题描述】:
我得到 this error: undefined local variable or methodsessions_path' 为 #when I go tolocalhost:3000/login` 看到代码与以前的应用程序,它确实有效。
这里是相关文件的代码。
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 %>
【问题讨论】:
-
完整的错误说明了什么? “NameError”没有帮助,但至少堆栈跟踪可以为出错的地方提供有用的上下文。
-
请添加完整的堆栈跟踪。
-
对不起!我添加了整个错误描述的代码和屏幕截图。
-
尝试将资源 :sessions 添加到您的路线中
-
大声笑,这几乎解决了它!添加一个答案,以便我批准您的答案以关闭此问题 :)
标签: ruby-on-rails