Basta con retirar los saltos de línea:
cats.each do |cat| cat.name end
Nota, hay dos estilos diferentes de codificación cuando se trata de a bloques. Un estilo de codificación dice a utilice siempredo
/end
de bloques que abarcan varias líneas y siempre uso {
/}
de bloques de una sola línea. Si sigue esa escuela, usted debe escribir
cats.each {|cat| cat.name }
El otro estilo es siempre uso do
/end
para los bloques que son ejecutados principalmente por sus efectos secundarios y {
/}
de bloques que se ejecuta principalmente para su valor de retorno. Como each
descarta el valor de retorno del bloque, solo tiene sentido pasar un bloque por sus efectos secundarios, por lo tanto, si sigue esa escuela, debe escribirlo con do
/end
.
Pero como @tokland menciones, la forma más idiomática sería escribir
cats.each(&:name)
Prueba this cats.each {| cat | cat.name} –