正确:
@teammates = Roster.all.sort_by(&:level)失败:
@teammates = Roster.all.sort_by(:level):级别的& infront做了什么?它的行为是否像C++中的引用?
提前感谢
发布于 2010-09-22 17:13:58
&symbol表示法是Rails添加的一些语法糖。它被称为symbol to_proc,可用于任何期望接收Proc的方法。
Array.sort_by需要一个proc,这就是传递符号失败的原因。symbol to_proc语法安排接收方(在本例中为sort_by )接收一个proc,其中包含要在proc中调用的方法的名称。
@teammates = Roster.all.sort_by(&:level)等同于
@teammates = Roster.all.sort_by{ |obj| obj.level }https://stackoverflow.com/questions/3767604
复制相似问题