2011-08-15 26 views
2

私はこれまでにこの作業をしていましたが、何らかの理由で作成アクションの1つでcurrent_userメソッドを呼び出すとnilが返され続けます。それは他のコントローラなどで使用されたときにうまく動作します(サイドパネルなど)。投稿時の現在のユーザnil

class CombatInstancesController < ApplicationController 
    def create 
    # when creating a new instance, check if the current user has one and destroy it 
    CombatInstance.find(current_user.combat_instance.id).destroy if current_user.combat_instance 
    # Now create the new one 
    render :json => current_user.create_combat_instance 
    end 

    def update 
    @combat_instance = current_user.combat_instance 
    @combat_instance.trigger_actions(params[:actions]) 
    @combat_instance.perform_ai_actions 
    @combat_instance.save # should we instead call this in an after hook? 
    render :json => @combat_instance 
    end 
end 
CombatInstance.find(current_user.combat_instance.id).destroy if current_user.combat_instance

ラインはCURRENT_USERがnilを返す場合です。ワークフローは次のとおりです。私はホームページに行きます。ログインするだけです。一番上に表示されるユーザー名は、ビューのcurrent_userヘルパーを使用して生成されます。しかし、ここでcreateアクションにヒットするフォームを送信すると、nilが返されます。

+0

私はこれでいいですか?詳細をお知らせください。どの線であなたは無限になっていますか?あなたが経験している正確なエラー/動作は何ですか? –

+1

ログイン後にホームページを更新しても、まだログインしていますか? 'RAILS_DEFAULT_LOGGER.info current_user'(Rails 2)や' Rails.logger.info current_user'(Rails 3)を 'create'アクションの最上部から実行すると、ログにはどうなりますか?あなたは 'CombatInstancesController'や' ApplicationController'に 'before_filters'を持っていますか? –

+0

はい私はまだログインしています。作成アクションの先頭にあるcurrent_userをログファイルに出力すると、空の文字列が出力されます。 – agmcleod

答えて

3

Rails 3 w/Ajaxコールを使用していますか?

はあなたのヘッダー内の

<%= csrf_meta_tag %> 

を持っていることを確認してください。

+1

これらの両方に該当します。ポストはajaxコールで作成され、headセクションにcsrf_meta_tagがあります。 – agmcleod

+0

"current_user"を読み込むためのコードは何ですか – Stephen

+0

あなたは何を意味するのかよく分かりません。ヘルパーはそれ自体を考案するために組み込まれているので、私自身の定義された方法ではありません。私の質問で述べたように、ヘルパーはビューなどでうまく動作します。それは私が別のコントローラーのアクションに入れたときにも見えます。 – agmcleod

関連する問題