2017-09-14 6 views
0

デバッグに関する問題が発生しています。セッションハッシュに格納された変数の値を.html.erbファイルに出力しようとしています。私はすべての変数が存在することを確認するセッションパラメータのデバッグ画面を使用していますが、ブラウザがhtmlコードをレンダリングし始めたら、私は必要な値を見ることができません。コントローラクラスでRuby on Railsのセッションオブジェクトに値を表示するにはどうすればよいですか?

私が持っている:

@var = session[:var] 

とhtml.erbファイルで、私はデバッグ画面のため、このコードは使用してい

<%= @var %> 

<%# in application.html.erb %> 
<%= debug(params) if Rails.env.development? %> 

I 「間違ってる?あなたのデバッグコードに基づいて

+0

「デバッグ画面」について詳しく教えてください。どのツール/コードをデバッグ画面に使用していますか?コントローラやビューに入っているときに変数をチェックしていますか?セッション[:var]または@var、またはその両方の値をチェックしていますか? – eiko

+0

私はこのコードをデバッグ画面に使用しています。私はこの行をapplication.html.erbに入れます: <%= debug(params)if Rails.env.development? %> デバッグ画面が言うので、私は、@varの値をチェックしていますこの: 「セッション:!ルビー/ハッシュと-アイバーズ:ActionController ::パラメータ 要素: VAR: '5' アイバーズ: :@permitted:false " だから、セッション[:var]ですべてがうまくいくと思った。 –

+1

コントローラメソッドにデバッガを追加することをお勧めします.Pryはうまく動作します。 https://github.com/rweng/pry-rails '@var = session [:var]'の後に 'biding.pry'を置くだけです。それ以外の場合は、コントローラのアクション+ビューでさらにコードを入力します。 –

答えて

0

<%= debug(params) if Rails.env.development? %> 

あなたはsessionオブジェクトparamsオブジェクトをチェックしていないように見えます。 paramsは、現在の要求のGETおよびPOSTデータを保持するオブジェクトです。しかし、sessionは、複数の要求に対してデータを保持するためにCookieを使用します。

このデータは、あなただけのあなただけの直接のparamsを使用する必要があり、この特定のページのために必要なものである場合:

@var = params[:var] 

あなたが実際にユーザーのセッションでこのデータを保存したいならば、あなたがする必要があります

# session[:var] will be available in future requests, 
# long after params[:var] and @var have been cleared. 
session[:var] = params[:var] 
@var = session[:var] 
関連する問題