Ruby on rails 正在尝试创建用户会话-->;没有路由匹配{:action=>;show";,:controller=>;users";,:id=>;nil}
在完成Michael Hart关于rails的教程后,我将尝试自己制作一个简单的应用程序 我设法创建了users资源,现在正在尝试创建sessions资源,以跟踪某人何时登录。我得到了一些非常奇怪的结果 1) 我试着在有人登录和有人注销时显示不同的菜单选项。它工作,除了它的行为与我预期的相反!i、 当我写作的时候Ruby on rails 正在尝试创建用户会话-->;没有路由匹配{:action=>;show";,:controller=>;users";,:id=>;nil},ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,在完成Michael Hart关于rails的教程后,我将尝试自己制作一个简单的应用程序 我设法创建了users资源,现在正在尝试创建sessions资源,以跟踪某人何时登录。我得到了一些非常奇怪的结果 1) 我试着在有人登录和有人注销时显示不同的菜单选项。它工作,除了它的行为与我预期的相反!i、 当我写作的时候 <ul class="nav pull-right"> <% if signed_in? %>
<ul class="nav pull-right">
<% if signed_in? %>
#menu for registered users
<% else %>
#menu for unregistered users
<% end %>
</ul>
应用程序控制器
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by_email(params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to user
else
flash.now[:error] = 'Invalid Email/Password Combination' #Not quite right;
render 'new'
end
end
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
end
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
end
class ApplicationController
想法?谢谢大家的帮助!我似乎有两个错误:1)用户在用户控制器中注册时,我没有登录;2)我没有重新启动服务器,并执行了db:reset。尝试之后,与注销不起作用有关的其他问题得到了解决。您当前的\u用户为零。检查当前用户为空的原因。登录时未设置May-be会话变量,谢谢您的评论>登录时未设置May-be会话变量我该如何检查?在您的创建方法中加入调试器,查看
会话
变量有哪些可用。感谢帮助!我似乎有两个错误:1)用户在用户控制器中注册时,我没有登录;2)我没有重新启动服务器,并执行了db:reset。尝试之后,其他与注销不起作用有关的问题得到了解决
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
end
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
end