4

これまでのページの URL パラメータをセッションに保存しようとしているので、誰かがランディング ページから移動した後にフォームに入力すると、キャンペーン ID が保持されます。私はそれをページごとに機能させることができたので、params を使用してフォームに到達した場合はそれを保持しますが、離れて移動すると明らかにそうではありません。私は現在持っています:

コントローラ:

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

paramsを使用したときは機能しましたが、セッションを使用しなかったので、適切に保存していないと思いますか?

4

2 に答える 2

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

が設定されている場合session[:campaign]は使用され、そうでない場合params[:campaign]は使用されます。のリセットはsession[:campaign]適切な場所で実装する必要があります。

于 2012-11-26T12:14:20.347 に答える
-3

これをアプリケーションのレイアウトに入れました:

- if params[:campaign] != nil || params[:campaign] != ""
  - session[:campaign] == params[:campaign] 

そして、それはコントローラを適切に動作させました:

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
于 2012-11-26T15:52:54.047 に答える