6

コントローラーで奇妙な動作が発生しています。json 応答をレンダリングする代わりにリダイレクトしたい場合があるようです。

respond_to :json, :html, :js

def create
  @favorite = current_user.favorites.build(:location_id=>params[:location_id])
  if @favorite.save
    respond_with(@favorite)
  else
    respond_with(@favorite.errors)
  end
end

ほとんどの場合はうまくいくと思いますが、今日、次のエラーが通知されました。

NoMethodError: #<FavoritesController:0x00000006171dc0> の未定義のメソッド `favorite_url'

params ハッシュは次のように記録されました。

{"format"=>"json",
 "action"=>"create",
 "user_id"=>"56",
 "auth_token"=>"iGSty8CMIaWsbShYZEtw",
 "location_id"=>"47943",
 "controller"=>"favorites"}

ほとんどの場合は機能しているように見えるので、特に奇妙です...他のコントローラーのいくつかを古い format.json { render :json => @object } 構文を使用するように変更しましたが、可能であればそれを避けたいと思います.

これはどうやってできるの?

4

1 に答える 1

3

GET ではないパスでは、respond_with指定された URL へのリダイレクトを試みます。カスタムレスポンダーでこれをオーバーライドできます

于 2011-05-09T20:34:47.287 に答える