在会话中保存URL参数(rails)

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而不是会话时它起作用,所以我假设我没有正确保存它?

awe*_*khh 9

您可以在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]在一个好的地方实现重置.