Рефакторинг HABTM с флажком

#ruby-on-rails #ruby-on-rails-4 #has-and-belongs-to-many #form-helpers

#ruby-on-rails #ruby-on-rails-4 #имеет-и-принадлежит-многим #форма-помощники

Вопрос:

я хочу реорганизовать этот код:

   <%= hidden_field_tag "contact[group_ids][]", nil %>
  <% Group.all.each do |g| %>
      <%= check_box_tag "contact[group_ids][]", g.id, @contact.group_ids.include?(g.id)%>
      <%= label_tag g.name %><br>
  <% end %>
  

Я хочу использовать методы формы для этого, например, но с использованием check_box:

 <%= f.collection_select(:departament_ids, Departament.all, :id, :name, {include_blank: true}, {multiple: true}) %>
  

Или другим способом, но я думаю, что очень путаю использование hidden_field_tag для редактирования в случае пустых опций и @contact.group_ids.include?(g.id) для выбора опций.

Любая помощь? Извините за мой плохой английский

Ответ №1:

Поскольку вы используете rails 4, вы можете использовать collection_check_boxes

Он будет работать так же, как collection_select, поэтому

 <%= f.collection_check_boxes(:departament_ids, Departament.all, :id, :name) %>
  

Комментарии:

1. В устаревших версиях существуют другие способы?

2. @user3251174 нет, это только rails 4. Rails 3 — это либо текущий метод, который у вас есть, либо реализация вашего собственного помощника, который работает так же, как и collection_check_boxes .