Не возвращать действие контроллера остановки для удаленного вызова

У меня есть проблема с формой sendind два параметра для контроллера. Я хотел бы, чтобы erb.jsшаблон не будет запущен, если update объекта не удается.

я добавил return в конце моего действия, но вид все еще срабатывает.

Она - бит моего контролера, который, я думаю, отвечает за действие представления или нет:

if @object.update(some_params)

...
  respond_to do |f|
    f.html {redirect_to some_path_here}
    f.js
  end
end

return

1 ответ

Решение

Это происходит, потому что в соответствии с соглашением о конфигурации Rails автоматически отображает вид действия, если это не указано явно.

Чтобы избежать рендеринга, одним из вариантов будет установка head, если @object не был успешно обновлен:

if @object.update(some_params)

...
  respond_to do |f|
    f.html {redirect_to some_path_here}
    f.js
  end
else
  head :unprocessable_entity
end
Другие вопросы по тегам