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块(不需要和返回,因为它无论如何都在函数的末尾).它在你面前显而易见它的作用,我喜欢在我的代码中. 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |