tag sintax rails escape comment ankle ruby

ruby - sintax - slim html



Ruby: ¿Qué significa $ 1? (2)

Estoy viendo un RailsCast sobre asociaciones polimórficas. http://railscasts.com/episodes/154-polymorphic-association?view=asciicast

Hay tres modelos diferentes: artículo, foto y evento, cada uno toma un comentario de Comment.rb. (Artículo, foto y evento, cada uno de un article_id, photo_id y event_id). Al enumerar los comentarios, tiene el problema de averiguar a cuál de los 3 modelos se enumeran los comentarios, por lo que lo hace en la acción de índice

def index @commentable = find_commentable @comments = @commentable.comments end def find_commentable params.each do |name, value| if name =~ /(.+)_id$/ return $1.classify.constantize.find(value) end end nil end

Mi pregunta es, ¿cuál es $1 ?


El $1 es un grupo que coincide con la expresión regular sobre /(.+)_id$/ . La variable $1 es la cadena que coincide entre paréntesis.


Según Avdi Grimm de RubyTapas

$ 1 es una variable global que se puede usar en el código posterior:

if "foobar" =~ /foo(.*)/ then puts "The matching word was #{$1}" end

Salida :

"La palabra coincidente era barra"

En resumen, $ 1, $ 2, $ ... son las variables globales utilizadas por algunas de las funciones de la biblioteca ruby, especialmente relacionadas con REGEX para que los programadores utilicen los resultados en códigos posteriores.

Vea esto para más variables disponibles en Ruby.