撰写return render 'edit'
和render 'edit' and return
时是否存在任何功能差异?两种语法都可以安全使用吗?
return render
语法稍微简洁一点,但render and return
正式提倡Avoiding Double Render Errors。
return render
将返回render方法返回的任何值,render and return
将从控制器方法返回nil
。
答案 0 :(得分:10)
你最后回答了你的问题:
return render将返回render方法返回的任何值 render和return将从控制器方法返回nil
重要的是你 返回 - 这可以防止控制器操作中的任何其他代码运行 - 从而保护您免受双重渲染错误的影响。我不相信任何东西实际上是在监听控制器动作的返回值。
如果我不得不猜测为什么首选方法是and return
我会说它看起来像散文,这是红宝石的方式。也就是说,它听起来像一个句子“渲染类别和返回”而不是“返回渲染类别”
答案 1 :(得分:2)
Ruby中的所有方法都返回与最后一个方法行相关的结果。
如果要在不等待整个方法的情况下返回结果,可以使用关键字return
示例:
def hello1
'I m first' # executes but is never returned
'I m second' # result
end
def hello2
return 'I m first' # result
'I m second' # this line will be never executeed
end
puts hello1
# => 'I m second'
puts hello2
# => 'I'm first'
方法render
的行为方式相同
但是render
方法的编写方式与过程类似(它有结果,但结果是true
),因此return
调用后只需render