use*_*017 4 url session ruby-on-rails params
我正试图将url params从任何页面保存到会话中,因此如果有人在离开其着陆页导航后填写表单,则会保留广告系列ID.我已经设法让它逐页工作,所以如果它们在带有参数的表格上着陆它会保留它,但是如果它们导航它们显然不会.我目前有:
控制器:
def campaign
if params[:campaign]!= nil
session[:campaign] = params[:campaign]
end
end
def post
rif = Registerinterest.find(:all, :conditions => ["reference = ?", session[:campaign]])
if rif.count == 0
post["Campaign_ID"] = "701D00000001111"
else
post["Campaign_ID"] = rif.first.campaign_id
end
end
Run Code Online (Sandbox Code Playgroud)
当我使用params而不是会话时它起作用,所以我假设我没有正确保存它?
您可以在controllers/application_controller.rb中添加before过滤器
class ApplicationController < ActionController::Base
before_filter persist_campaign_session
def persist_campaign_session
session[:campaign] ||= params[:campaign]
end
end
Run Code Online (Sandbox Code Playgroud)
如果session[:campaign]设置将被使用,否则params[:campaign]将被使用.你应该session[:campaign]在一个好的地方实现重置.