正确:
@teammates = Roster.all.sort_by(&:level)
失败:
@teammates = Roster.all.sort_by(:level)
&面前:水平吗?它是否像C ++中的引用一样?
提前致谢
答案 0 :(得分:1)
&symbol
符号是Rails添加的一些语法糖。它被称为符号to_proc,可用于任何期望接收Proc。
Array.sort_by需要一个proc,这就是传递符号失败的原因。符号to_proc语法为接收者安排,在这种情况下sort_by接收包含要在proc中调用的方法名称的proc。
@teammates = Roster.all.sort_by(&:level)
相当于
@teammates = Roster.all.sort_by{ |obj| obj.level }