0

我正在使用这个第 3 方控制器:

   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。有没有办法阻止/防止这种情况?

谢谢!

4

1 回答 1

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
于 2016-03-03T05:44:16.100 回答