我正在使用第三方控制器:
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
。有没有办法阻止/阻止它?
谢谢!
答案 0 :(得分:0)
我认为你正在进行两次重定向。 尝试删除更新方法上的一个重定向。
使用 respond_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