Estoy buscando una mejor manera de fusionar variables en una cadena, en Ruby.
Por ejemplo, si la cadena es algo como:
"El animal actiondel second_animal"
Y tengo variables para animal, actiony second_animal, ¿cuál es la forma preferida de poner esas variables en la cadena?

Puede usar un formato similar a sprintf para inyectar valores en la cadena. Para eso, la cadena debe incluir marcadores de posición. Coloque sus argumentos en una matriz y use una de estas formas: (Para obtener más información, consulte la documentación de Kernel :: sprintf ).
Incluso puede especificar explícitamente el número de argumento y barajarlo:
O especifique el argumento usando claves hash:
Tenga en cuenta que debe proporcionar un valor para todos los argumentos al
%operador. Por ejemplo, no puede evitar definiranimal.fuente
Usaría el
#{}constructor, como se indica en las otras respuestas. También quiero señalar que hay una verdadera sutileza aquí a tener en cuenta aquí:Si bien las cadenas se pueden crear con comillas simples (como lo demuestran las variables
first_nameylast_name, el#{}constructor solo se puede usar en cadenas con comillas dobles.fuente
es otra forma de hacerlo.
fuente
Esto se llama interpolación de cadenas, y lo haces así:
Importante: solo funcionará cuando la cadena esté entre comillas dobles ("").
Ejemplo de código que no funcionará como esperabas:
fuente
El sistema de plantillas ERB estándar puede funcionar para su escenario.
fuente
Puede usarlo con sus variables locales, así:
@animal = "Dog"@action = "licks"@second_animal = "Bird""The #{@animal} #{@action} the #{@second_animal}"el resultado sería: "El perro lame al pájaro "
fuente