美文网首页
render 避免双重渲染错误

render 避免双重渲染错误

作者: 吃果果的蛐蛐 | 来源:发表于2018-10-15 14:51 被阅读0次

    下面的代码会导致这个错误:

    def show
      @book = Book.find(params[:id])
      if @book.special?
        render action: "special_show"
      end
      render action: "regular_show"
    end
    

    错误消息:Can only render or redirect once per action(一个动作只能渲染或重定向一次)
    注意:Rails 开始渲染,把 @book 变量导入 special_show 视图中。

    如果 @book.special? 的求值结果是 true,Rails 开始渲染,把 @book 变量导入 special_show 视图中。但是,show 动作并不会就此停止运行,当 Rails 运行到动作的末尾时,会渲染 regular_show 视图,从而导致这个错误。解决的办法很简单,确保在一次代码运行路径中只调用一次 render 或 redirect_to 方法。有一个语句可以帮助解决这个问题,那就是 and return。

    下面的代码对上述代码做了修改:

    def show
      @book = Book.find(params[:id])
      if @book.special?
        render action: "special_show" and return
      end
      render action: "regular_show"
    end
    

    相关文章

      网友评论

          本文标题:render 避免双重渲染错误

          本文链接:https://www.haomeiwen.com/subject/ncufzftx.html