#ruby-on-rails #forms #has-and-belongs-to-many
#ruby-on-rails #формы #имеет-и-принадлежит-многим
Вопрос:
В моем приложении администратор компании определяет набор атрибутов, которые должны быть связаны с местоположением (например, размер рынка и географическое положение). Они также определяют, какие значения приемлемы для данного атрибута (только по одному для каждого атрибута для каждого местоположения). Поскольку не существует фиксированного количества атрибутов, я использую HMT для этой ассоциации. По сути, location.attributes содержит атрибуты, связанные с местоположением. Я хочу, чтобы в представлении местоположения пользователь мог выбирать значения для каждого атрибута. Я хочу, чтобы эти значения затем обновляли ассоциацию HMT. Я могу найти только подход грубой силы, заключающийся в создании хэша с этими атрибутами, заполнении тегов select выбранными вариантами, а затем обработке возвращающегося хэша для обновления вручную, присвоении выбранных пользователем параметров коллекции HABTM (location.attributes = параметры [местоположение] [атрибуты]). Это кажется чем-то достаточно распространенным, что ROR должен иметь более встроенный способ сделать это. Я упускаю что-то очевидное?
Комментарии:
1. ммм, не уверен, что это может помочь, но попробуйте посмотреть «railscasts» Райана Бейтса, возможно, эпизоды railscasts.com/episodes/196-nested-model-form-part-1 и railscasts.com/episodes/196-nested-model-form-part-2 может дать вам подсказку
2. Все еще не совсем понятно, что касается настройки атрибутов и допустимых значений. Для данного местоположения а) выбирает ли администратор размер рынка, но, возможно, не географическое местоположение; и б) затем для размера рынка выбирает, каков размер рынка, или выбирает несколько значений, которые могут быть выбраны для размера рынка?
3. Я решил эту проблему правильным способом (я думаю), используя accepts_nested_attributes и fields_for для фактических значений ассоциации вместо создания хэша значений из ассоциации. Я изобретал велосипед (мой обычный обычный грех)
4. это способ сделать это, наверняка. Помогли ли связанные выше железнодорожные трансляции?
Ответ №1:
у @Ingo был правильный ответ, указывающий мне на вложенные формы railcasts. Спасибо!