Символ переменной в объекте Params в rails
-
16-09-2019 - |
Вопрос
У меня есть следующий код:
@profile.update_attributes(params[:xxxx_profile])
где xxxx означает либо мужчину, либо женщину.В принципе, форма отправки передает либо набор female_profile[foo]
или a male_profile[foo]
и я хочу изменить это соответствующим образом.Предполагая, что у меня есть строка, которую можно вставить вместо xxxx, как мне динамически создать этот символ?
Спасибо.
Решение
Попробуйте что-то вроде:
@profile.update_attributes(params["#{gender}_profile".to_sym])
или вы должны иметь возможность передавать строку без преобразования в символ, потому что Rails использует HashWithIndifferentAcceess для параметров: http://api.rubyonrails.org/classes/HashWithIndifferentAccess.html
@profile.update_attributes(params["#{gender}_profile"])
Другие советы
Разобрался в этом.Подумал, что это может быть кому-то полезно.
@profile.update_attributes(params[(@sexstring + "_profile").to_sym])
Вы также могли бы сделать
@profile.update_attributes(params[:"#{gender}_profile"])
Не связан с StackOverflow