Rails: использование нескольких флажков для одного поля - PullRequest
0 голосов
/ 26 сентября 2019

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

<%= simple_form_for(@health_profile) do |f| %>

    <% @hp_prior.medications.split(", ").each do |med| %>
        <%= check_box_tag "health_profile[medications][]", med, false, id: med, multiple: true %>
        <label for="<%= med %>"><%= med.capitalize %></label>
    <% end -%>

<% end -%>

В моем контроллере я изменил :medications для принятия массива:

def health_profile_params
    params.require(:health_profile).permit(:medications => [])
end

Но я столкнулся с проблемой с даннымипотому что представленные параметры формы имеют вид:

Parameters: {... "health_profile"=>{"medications"=>["zyrtec for allergies", "advil"]}, "commit"=>"Submit"}

Но после вызова HealthProfile.new(health_profile_params) запись выглядит так:

#<HealthProfile:0x007fb08fe64488> {... :medications => "[\"zyrtec for allergies\", \"advil\"]"}

Как можно объединить эти значения, чтобыфинал @health_profile выглядит так:

#<HealthProfile:0x007fb08fe64488> {... :medications => "zyrtec for allergies, advil"}

1 Ответ

2 голосов
/ 26 сентября 2019

Реализуйте пользовательский установщик для атрибута в вашей модели:

def medications=(value)
  value = value.join(', ') if value.is_a?(Array)
  write_attribute :medications, value
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...