que tienen las variablescadena Convertir a nombre de variable en rubí
<% mon_has_two_sets_of_working_hours = 0 %>
<% tue_has_two_sets_of_working_hours = 0 %>
<% wed_has_two_sets_of_working_hours = 0 %>
que quieren cambiar los valores de estas variables de forma dinámica.
<% days_array = ['mon', 'tue', 'wed'] %>
<% days_array.each do |day| %>
<% if condition? %>
# here i want to set %>
<% "#{day}__has_two_sets_of_working_hours" = 1 %>
end
end
El valor no se está asignando. ¿Hay alguna forma de asignar valor a la variable de forma dinámica?
Haz, haz, utiliza matrices (o hashes) para eso. –
La respuesta a [2530112] (http://stackoverflow.com/questions/2530112) debería ayudar, recomienda 'instance_variable_set'. –
La creación dinámica de un nombre de variable sobre la marcha es factible en algunos idiomas, incluido Ruby, pero ha estado perdiendo popularidad durante años, y se considera una curiosidad sobre todo. Conduce a una confusión que conduce a problemas de mantenimiento, por lo tanto, evite el problema y use un hash. También puede provocar problemas de seguridad si los nombres de las variables provienen de una entrada proporcionada por el usuario, o podría causar errores extraños si un nombre colisionara con una variable creada anteriormente. –