0

私は次の協会を持っています:

キャンペーンhas_many の旅行
旅行の属しているキャンペーン
旅行has_manyイベント
イベントの属している旅行

私の API では、次のような URL の POST リクエストを受け入れます。

/campaigns/1/trips

JSON が渡される場所。JSON は次のようになります。

{"trip":{"red":3, "blue":400, "events_attributes":[{"distance":300}, {"distance":400}]}}

イベント コントローラーの #create アクションは次のようになります。

 def create
     begin
         @campaign = @user.campaigns.find(params[:campaign_id])
         @trip = @campaign.trips.create(params[:trip])
         render json: @trip, :status => :ok
     rescue
         render json: '', :status => :not_found 
     end
 end

私の旅行モデルでは、次の行を追加しました。

   accepts_nested_attributes_for :events

そのため、対応するイベントでトリップが作成されることを期待していましたが、代わりに 401 not found が返されます。events_attributes を渡さない場合、旅行は正しく作成されます。

この質問に従って、この解決策を考え出しました: Rails での JSON を使用した入れ子になったオブジェクトの作成

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

1

間違った例外をキャッチしていたので、混乱しました。

events_attributes は Trip モデルからアクセスできなかったため、大量割り当てエラーが発生していましたが、間違って見つからない例外としてそれを取得していました。

Trip モデルに次の行を追加しました。

attr_accessible :events_attributes

そして、それは魅力のように機能しました:)

ああ、ところで、これをレスキューに追加しました:

rescue ActiveRecord::RecordNotFound
于 2013-06-13T15:47:21.173 に答える