| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby On Rails > Глюк выпадающего списка select |
| Автор: m_maxser 2.7.2012, 09:54 | ||
| Здравствуйте. Есть модель User с полем email_options, поле хранит настройки email рассылки. Чтобы изменить настройки, пользователь заходит в личный кабинет, где выбирает их из выпадающего списка. Список создается так:
Локально (W7, mysql), все работает как надо. А вот на сервере (Linux, Oracle) есть проблема с отображением. Например если у пользователя в БД, поле "email_options" хранит значение "2", то по при генерации списка, "Опция 3" должна помечаться как selected="selected". Но этого не происходит. Из-за этого всегда отображается первый элемент списка ("Опция 1"). При этом сохранение в БД работает. Я без проблем выбираю элемент, жму "сохранить" и значение в БД меняется. В чем может быть причина? |
| Автор: m_maxser 2.7.2012, 14:29 |
| пожалуйста помогите разобраться |
| Автор: source777 2.7.2012, 17:39 |
| В приведённом тобой примере надо вручную указывать текущее значение, после опций {:selected => value} Но лучше использовать хелперы из модуля FormBuilder, которые автоматически подставляют значения атрибутов на основе созданного в контроллере объекта. Подробно описано в http://guides.rubyonrails.org/form_helpers.html#select-boxes-for-dealing-with-models. |
| Автор: m_maxser 3.7.2012, 14:25 |
| Так мой пример полностью соответствует тому, что написано в Rails Guides. первый параметр для работы с конкретной моделью второй - поле этой модели третий - массив значений, который может принимать это поле. И если второй параметр уже содержит значение, то соответствующий элемент из массива помечается как "selected". Пример нормально работает локально. Глюк только на хостинге был. Проблему можно сказать решил, все дело в моей невнимательности и лени :(. По моему это было из-за того, что когда я добавлял новое поле в модель User, миграцию запустил только на локали. На сервере было лень (живая БД и т.п.), так что я просто закомитил миграцию, без ее запуска. Поле добавил вручную. Я так уже делал раньше, все было нормально. При этом все нормально сохранялось. Обнаружил причину, когда запустил копию проекта с другой БД, но уже через миграции. Там все работало. А сервер тотже, все такое же Вот! |