2010-12-08 10 views
0

私のアプリケーションヘルパーに次のコードがあります。セッションをRailsヘルパーで作成する

route = ActionController::Routing::Routes.recognize_path(current_uri) 
    controller = route[:controller] 
    action = route[:action] 
    session['route']<< [controller.to_s,action.to_s] 

私はあなたがそれを期待していなかったときは、nilのオブジェクトを持っている 次のエラーを取得! Arrayのインスタンスが想定されている可能性があります。 nilを評価中にエラーが発生しました。 < <

一部のクイックログと私はそのコントローラと動作がうまく動作するのを見ます。ヘルパーでセッションを作成できませんか?

答えて

0

あなたは(あなたがする場合は、「ルートのスタック」)セッションはこれらの配列の配列を保持したい場合は、session[:route]が非nilであることを確認するために、あなた最初の必要性:

session[:route] ||= [] 
session[:route] << [controller.to_s, action.to_s] 

そうでない場合単にそれを割り当ててください:

session[:route] = [controller.to_s, action.to_s] 

また、記号をハッシュキーとして使用する必要があります。文字列ではありません。

+1

最初の 'if'文を' session [:route] || = [] 'に短縮することができます。 – edgerunner

+0

@edgerunnerが追加されました。ありがとう! –

0

あなたがやっているやり方は間違っている可能性があります。このコードが初めて実行されるとき、セッション['route']はnilとして取得されます。あなたは何をここでやろうとしている、が

session['route'] = [controller.to_s, action.to_s] 

を行うことができますか?あなたがここでやろうとしていることを達成するのがより良いと思います。

関連する問題