在Rails中“return render”vs“render ... and return”

时间:2016-06-14 11:22:36

标签: ruby-on-rails controller

撰写return render 'edit'render 'edit' and return时是否存在任何功能差异?两种语法都可以安全使用吗?

return render语法稍微简洁一点,但render and return正式提倡Avoiding Double Render Errors

return render将返回render方法返回的任何值,render and return将从控制器方法返回nil

2 个答案:

答案 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