Использование респондентов с response_with, который занимает блок
Я запускал rails 3.2.1 и использовал ответчики rails 3, а также флэш-ответчик, доступный в геме ответчиков: https://github.com/plataformatec/responders
Для некоторых из моих действий контроллера я всегда хочу перенаправить обратно на предыдущий URL, но отображать флэш-сообщение, если объект создан или нет, это выглядит примерно так:
class MyController < ActionController::Base
responders :flash
respond_to :html
def create
@my_object = MyObject.create(params[:my_object])
respond_with @my_object do |format|
format.html { redirect_to :back }
end
end
end
Это прекрасно работает в rails 3.2.1, но, похоже, перестало работать в 3.2.2, похоже, были некоторые изменения в том, как response_with функционирует при взятии блока. Конкретно этот патч: https://github.com/rails/rails/pull/4870/files
Мне было интересно, есть ли способ добиться такого же поведения и использовать флэш-ответчик для установки флэш-сообщений (я не хочу делать это вручную).
2 ответа
Оказалось ошибка в рельсах 3.2.2 https://github.com/rails/rails/pull/5299
Вам нужно создать свой собственный респондент, чтобы все время выполнять перенаправление и включать его в свой контроллер.
Респондент похож на Rack::Middleware. Вы можете накопить это.