2010-09-22 9 views
2

Correct:Ruby on Rails 3 Programmation Question

@teammates = Roster.all.sort_by(&:level) 

ne réussit pas:

@teammates = Roster.all.sort_by(:level) 

Qu'est-ce que le & Infront du: niveau faire? Est-ce qu'il agit comme une référence comme en C++?

Merci à l'avance

Répondre

1

La notation est &symbol sucre syntaxique ajoutée par Rails. Il est connu sous le nom de symbole to_proc et peut être utilisé contre toute méthode qui s'attend à recevoir un Proc. Array.sort_by attend un proc et c'est pourquoi le simple fait de passer le symbole échoue.

La syntaxe to_proc du symbole arrange pour le récepteur, dans ce cas, sort_by pour recevoir un proc contenant le nom d'une méthode à appeler dans le proc.

@teammates = Roster.all.sort_by(&:level) 

équivaut à

@teammates = Roster.all.sort_by{ |obj| obj.level } 
+0

Comment Rails ajouter cette syntaxe? – panzi