Ответить с перенаправлением, когда формат = JSON - PullRequest
4 голосов
/ 03 апреля 2011

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

3 голосов
/ 10 мая 2011

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

...