Ответить с перенаправлением, когда формат = JSON

Я сталкиваюсь со странным поведением в моих контроллерах. Кажется, они иногда хотят перенаправить вместо того, чтобы сделать ответ 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: неопределенный метод `Favorites_url'для #

Хэш параметров был записан как:

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

Особенно странно, потому что это, кажется, работает большую часть времени... Я изменил некоторые другие мои контроллеры, чтобы использовать старый синтаксис format.json { render:json => @object }, но я хотел бы избежать этого, если это возможно,

Как это могло произойти?

1 ответ

Решение

На пути, которые не являются GET, respond_with пытается перенаправить на URL-адрес для всего, что ему дают. Вы можете переопределить это с пользовательским ответчиком

Другие вопросы по тегам