Session Rails 4-设置会话变量,以便用户只能在该会话期间查看页面

Session Rails 4-设置会话变量,以便用户只能在该会话期间查看页面,session,ruby-on-rails-4,session-variables,Session,Ruby On Rails 4,Session Variables,我使用的是rails 4,希望提供一个包含一些个人信息的即时报价。我需要使某个人的整个会话都可以查看报价,而不让他们登录,但其他会话无法查看该报价。这个想法是,他们可以看到我给他们的报价,并下载作为PDF格式的报价。这是我的控制器的精髓——但它不起作用 class ClientsController < ApplicationController before_filter :check_guest, :only => :show def check_guest # # if

我使用的是rails 4,希望提供一个包含一些个人信息的即时报价。我需要使某个人的整个会话都可以查看报价,而不让他们登录,但其他会话无法查看该报价。这个想法是,他们可以看到我给他们的报价,并下载作为PDF格式的报价。这是我的控制器的精髓——但它不起作用

class ClientsController < ApplicationController
  before_filter :check_guest, :only => :show
def check_guest
  # # if user isn't logged in
  if current_user.nil? 
  #   # if user has already viewed, redirect
  #   if session[:viewed] == true
  #     flash[:alert] = "You can only view a quote once. Please resubmit your information."
  #     redirect_to root_path
  #   # if user hasn't viewed, allow access, but flag as having viewed
  #   else
  #     session[:viewed] = true
  #   end
    if session[:quote_id] == params[:id] # where params[:id] is the quote ID
      flash[:alert] = "Allow"
    else
      flash[:alert] = "Dont Allow"
    end        
  end
end
class客户端控制器:show
def check_客人
##如果用户未登录
如果当前_user.nil?
##如果用户已查看,则重定向
#如果会话[:已查看]==true
#flash[:alert]=“您只能查看一次报价。请重新提交您的信息。”
#将\重定向到根\路径
##如果用户尚未查看,则允许访问,但标记为已查看
#否则
#会话[:已查看]=真
#结束
如果会话[:quote_id]==params[:id]#其中params[:id]是quote id
闪存[:警报]=“允许”
其他的
闪存[:警报]=“不允许”
结束
结束
结束

我想我需要设置变量session[:quote_id]=@client.id,但我不确定是在create操作还是show操作中这样做。无论我放在哪一个地方,整个代码都不起作用。非常感谢您的帮助。谢谢。我需要做两件事

首先,将会话变量设置为create中的最后一个操作

def create
....some actions
session[:quote_id] = @client.id
end
接下来,我必须将params ID转换为整数,以便正确计算

session[:quote_id] == (params[:id].to_i)

我需要做两件事

首先,将会话变量设置为create中的最后一个操作

def create
....some actions
session[:quote_id] = @client.id
end
接下来,我必须将params ID转换为整数,以便正确计算

session[:quote_id] == (params[:id].to_i)