我正在使用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
我想我需要设置变量session [:quote_id] = @ client.id但不确定我是否在create action或show action中这样做。无论我把它放在哪里,整个代码都不起作用。任何帮助是极大的赞赏。谢谢。
答案 0 :(得分:0)
我需要做的两件事。
首先,将会话变量设置为create中的LAST操作。
def create
....some actions
session[:quote_id] = @client.id
end
接下来,我必须将params ID转换为整数,因此它会正确评估。
session[:quote_id] == (params[:id].to_i)