Rails - перехватить ответ

Я использую этот сторонний контроллер:

   class LibController

      def update
        # 29 lines of code
        respond_with resource
      end

   end

Я хочу сделать что-то кроме respond_with в конце. Но я не хочу просто копировать / вставлять все 29 строк в MyController.update, К сожалению, я не могу найти способ визуализации или перенаправления в другом месте:

   class MyController < LibController

     def update
       super
       redirect_to somewhere_else
     end

   end

Я получаю DoubleRenderError: Render and/or redirect were called multiple times in this action, Я предполагаю, что это потому, что respond_with звонки render немедленно. Есть ли способ заблокировать / предотвратить это?

Спасибо!

1 ответ

Я думаю, что вы делаете двойное перенаправление. Попробуйте удалить одно перенаправление в вашем методе обновления.

Проверьте пример кода ниже, который показывает эквивалентный ответ при использовании response_with.

def create
  @user = User.new(params[:user])
  flash[:notice] = 'User was successfully created.' if @user.save
  respond_with(@user)
end

Что точно так же, как:

def create
  @user = User.new(params[:user])

  respond_to do |format|
    if @user.save
      flash[:notice] = 'User was successfully created.'
      format.html { redirect_to(@user) }
      format.xml { render xml: @user, status: :created, location: @user }
    else
      format.html { render action: "new" }
      format.xml { render xml: @user.errors, status: :unprocessable_entity }
    end
  end
end
Другие вопросы по тегам