флажки simple_form collection добавляют неожиданные значения в базу данных - PullRequest
0 голосов
/ 24 марта 2012

Среда: Rails 3.2.1
SimpleForm 2.0.1
Я встречал пользователей здесь и в других местах, которые задавали подобные вопросы через Google, но я еще не нашел ответов!

Я хочу предоставить серию флажков для определения предпочтений контакта.
Я сделал небольшое тестовое приложение, используя то, что заметил в демонстрационном приложении simple_form.

Модель "Мой контакт" имеет строковый атрибут с именем "post_pref"

В ContactsHelper я включил это:

def contact_preference_options
  ['High Resolution','Web Resolution','Browser','Hard Copy Proof']
end

В мой _form частичный я включаю это:

<%= f.input :post_pref, :collection => contact_preference_options, :as => :check_boxes %>

Я запустил сервер и создал новый контакт.

В представлениях Новый и Изменить отображаются флажки. Я выбрал «Браузер» в качестве предпочтения для моего нового контакта и отправил его.
Результатом проверки одного или нескольких параметров является беспорядок.

Первый:
когда я иду редактировать запись, текущие настройки не проверяются.

Второе:
В представлениях Show и Index я вижу это:

--- - Browser - ''

В консоли я вижу это:

---\n- Browser\n- ''\n

То, что я хочу увидеть, таково:

Browser

Мои вопросы:
Откуда идут черточки?
Откуда появляются новые линии?
Почему там пустая строка?
Почему ранее выбранные флажки не отмечены при редактировании контакта?

Примечание: когда я делал вышеуказанное с переключателями или выбирал опции, он работал нормально. Но я хочу, чтобы у контакта было несколько предпочтений, поэтому мне нужны флажки.

Интересно, что я попробовал то же самое с formtastic вместо simple_form и получил почти идентичные результаты. Какой трюк с флажками?

Спасибо миллион за любую помощь.

1 Ответ

0 голосов
/ 15 апреля 2012

Для меня это выглядело как сохранение массива, поэтому перед его сохранением я провел некоторую предварительную обработку параметров:

lifestyle = params[:lifestyle]
lifestyle[:languages] = lifestyle[:languages].reject(&:blank?).join(",")
if @lifestyle.update_attributes(lifestyle)
...

В этом примере мои флажки были языками в соответствии с моделью образа жизни. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...