рельсы, возвращающие все флажки вместо только одного - PullRequest
0 голосов
/ 05 мая 2011

Я использую simple_form и у меня есть следующий образец тега:

<%= f.input :medical_conditions, :label=>false, :collection => medical_conditons, :as => :check_boxes%>

Коллекция содержит около 100 флажков. Однако, когда пользователь выбирает только 1 или 2, все по-прежнему сохраняется в базе данных следующим образом:

---
- ""
- ""
- ""

medical_conditions - это простой массив в моем application_helper

def medical_conditons
t = [
    "Allergies/Hay Fever",
    "Diabetes",
    "Heart Surgery"]
return t
end

поле medical_conditions является полем :string.

Что мне нужно сделать, чтобы только выбранные значения сохранялись через запятую.

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Попробуйте что-то подобное в вашем контроллере (догадываясь о том, как вы написали свои методы создания / обновления) ...

params[:medical_conditions].delete('') #this will remove the empty strings
@instance.update_attribute(:medical_conditions, params[:medical_conditions].join(','))
#or however you want to save the input, but the key is the .join(',') which will
#create a comma-separated string of only the selected values, which is exactly
#what you're looking for me thinks :-)

Если это поможет вам, я бы подумал сделать частного помощникаметод, который форматирует параметры для вас, чтобы вы могли использовать его в #create, #update или где угодно.Это должно сделать вещи немного чище и больше «рельсовыми» в ваших грубых поступках.

1 голос
/ 07 мая 2011

Это не простое_формное поведение.Это от Rails.Смотрите это: http://d.pr/6O2S

...