¿Por qué el espacio en blanco afecta a las llamadas a la función ruby?

Me sale un error de syntax con este código

render json: { "what" => "created", "whatCreated" => "thing", "htmlOutput" => render_to_string (partial: "some_partial") } 

Pero con este código no lo hago:

 render json: { "what" => "created", "whatCreated" => "thing", "htmlOutput" => render_to_string(partial: "some_partial") } 

¿Cómo es que ese espacio después de render_to_string rompe la aplicación Rails?

La cosa es que ese método en Ruby se puede ejecutar con o sin paréntesis. por ejemplo, puede ejecutar Array.new 1,2 y ruby ​​sabe que recibe los argumentos después del espacio. y también puedes ejecutar Array.new(1,2) y Ruby sabe que los argumentos están dentro de los paréntesis.

pero, cuando ejecuta Array.new (1,2) , ruby ​​cree que recibirá argumentos después del espacio, pero en realidad recibe una tupla (1,2) , y básicamente es exactamente igual que Array.new((1,2))

así que la línea de fondo:

Array.new (1,2) == Array.new((1,2)) y eso es un error de syntax porque (1, 2) literal no es válido

Como guía general de estilo de Ruby, no debe poner un espacio antes de los paréntesis de la lista de parámetros. Esto no está relacionado con los Rails, sino con el lenguaje Ruby. Prueba los siguientes para ver:

 Array.new(1,2) # => [2] Array.new (1,2) # = > SyntaxError: unexpected ',', expecting ')' Array.new(1) # => [nil] Array.new (1) # => [nil] 

Como puede ver en el segundo ejemplo, el código se rompió, el intérprete esperaba encontrar a ) pero encontró,. Sin embargo, en el último ejemplo no se rompió.

    Intereting Posts