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