У меня есть переменныеПреобразовать строку в имя переменной в рубин
<% mon_has_two_sets_of_working_hours = 0 %>
<% tue_has_two_sets_of_working_hours = 0 %>
<% wed_has_two_sets_of_working_hours = 0 %>
Я хочу изменить значения этих переменных динамически.
<% 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
Значение не присваивается. Есть ли способ присвоить значение переменной динамически?
Делайте, делайте, используйте для этого массивы (или хеши). –
Ответ на [2530112] (http://stackoverflow.com/questions/2530112) должен помочь, он рекомендует 'instance_variable_set'. –
Динамическое создание имени переменной «на лету» можно выполнять на некоторых языках, включая Ruby, но в течение многих лет не пользуется популярностью и в большинстве случаев считается любопытством. Это приводит к путанице, которая приводит к проблемам обслуживания, поэтому обойти проблему и использовать хеш. Это также может привести к проблемам безопасности, если имена переменных поступают из введенного пользователем ввода или могут вызвать странные ошибки, если имя столкнулось с ранее созданной переменной. –