加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 我不理解避免DoubleRenderError的代码

发布时间:2020-12-17 02:30:18 所属栏目:百科 来源:网络整理
导读:official page有这个片段: def show @book = Book.find(params[:id]) if @book.special? render :action = "special_show" and return end render :action = "regular_show"end 为什么这不等同? def show @book = Book.find(params[:id]) if @book.special
official page有这个片段:

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

为什么这不等同?

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

或者,为什么不使用这个?

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

我不明白渲染的必要性……并且返回

解决方法

事实上它们都是等价的.你的例子碰巧用最不直观的版本.不知道为什么,但这种风格是我在Rails示例中经常看到的.

本质上,并且是一个具有非常低的绑定优先级的布尔运算符,因此像expression_a和expression_b这样的行将导致expression_a被计算,然后,只要它没有计算为nil或false,它就会计算expression_b.因为渲染返回……好吧,非虚假的东西 – 不知道是什么,确切地说……你的例子就像渲染一样;返回(或使用换行符而不是分号,就像在第二个片段中一样).

就个人而言,我更喜欢第三个片段,带有if / else块(不需要和返回,因为它无论如何都在函数的末尾).它在你面前显而易见它的作用,我喜欢在我的代码中.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读