0

新しい Entry オブジェクトを作成するために、Rails アプリケーションを curl して POST しようとしています。問題は、私の entry_controller Create アクションが次のようになっていることです。

      def create
        @user = current_user
        @entry = @user.entries.build(params[:entry])

        respond_to do |format|
         if @entry.save
          format.html { redirect_to landing_page_url, notice: 'Entry was successfully created.' }
          format.json { render json: @entry, status: :created, location: @entry }
         else
          format.html { render action: "new" }
          format.json { render json: @entry.errors, status: :unprocessable_entity }
         end
        end
       end

@user.entries.build を呼び出すと、 current_user が存在しないため、例外が返されます。問題は、ブラウザーを使用してエントリを作成すると (ログインして current_user 変数を作成するため)、Create アクションがうまく機能することですが、コントローラのロジックを変更せずに POST をカールさせてエントリを作成できるかどうかはわかりません。それが不可能な場合、誰かがコントローラー ロジック (curl POST と互換性がある) を構築するための正しい方向に到達するのを手伝ってくれますか?

これがばかげた質問である場合は申し訳ありませんが、私はこれらすべてにかなり慣れていません。

PS: 私は Rails 3.2.3 を使用しています。

4

1 に答える 1

0

current_user の作成方法 (何に基づいているか) はわかりませんが、メソッドが機能するにはこれが存在する必要があります。ユーザーを指定するパラメーターをアクションに渡して current_user をcurrent_user ||= params[:user]... に設定できる場合は、これによるセキュリティへの影響に注意してください。

current_user を設定するには、アクションに before_filter が必要です(ログインを介して、私は推測しています)。

于 2012-04-26T16:46:12.203 に答える