Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 正在尝试创建用户会话-->;没有路由匹配{:action=>;show";,:controller=>;users";,:id=>;nil}_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 正在尝试创建用户会话-->;没有路由匹配{:action=>;show";,:controller=>;users";,:id=>;nil}

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? %>

在完成Michael Hart关于rails的教程后,我将尝试自己制作一个简单的应用程序

我设法创建了users资源,现在正在尝试创建sessions资源,以跟踪某人何时登录。我得到了一些非常奇怪的结果

1) 我试着在有人登录和有人注销时显示不同的菜单选项。它工作,除了它的行为与我预期的相反!i、 当我写作的时候

        <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