Я начинаю рельсы, и перед вами стоит основная проблема. Я нашел пару решений, но ни один из них не полностью описывает мою проблему. У меня есть две модели: контакт и группуПодключение двух моделей принадлежит_to/has_many и выбор по выпадающему меню в форме
Group has_many :contacts
Contact belongs_to :group
(Через изобрести есть третья модель пользователя)
При создании нового контакта я хочу, чтобы пользователь сможет выбрать группу, что этот контакт принадлежит через опцию выбора (например, поле выпадающего списка).
Я добавил: GROUP_ID индекс он контактирует таблице:
class AddGroupIdToContacts < ActiveRecord::Migration
def change
add_column :contacts, :group_id, :integer
end
end
В обзорных/контакты/_form Я использовал опцию collection_select для вывода раскрывающегося списка поля, показывая доступные группы:
<%= form_for(@contact) do |f| %>
<% if @contact.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@contact.errors.count, "error") %> prohibited this contact from being saved:</h2>
<ul>
<% @contact.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
...
<div class="field">
<%= f.label :group_id %><br>
<%= f.collection_select(:group_id, Group.all, :id, :name) %>
</div>
...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Я могу ввести новый контакт успешно, но при проверке в консоли у меня пустое поле group_id: nil.
Каков правильный способ ввода идентификатора выбранной группы в поле group_id и как я могу отобразить эту запись (желательно, используя имя идентификатора групп) в show.html.erb?
Я знаю, что это основные вопросы, но я застрял и довольно новичок в рельсах. Спасибо за вашу помощь!
Я пробовал код и его работу отлично. Я могу сохранить контакт с group_id без каких-либо изменений в вашем коде. Пожалуйста, проверьте еще раз. Вы получаете group_id в параметрах в контроллере? – Anuja
Как вы указали, код работает. Как вы сказали, я забыл включить group_id в контроллеры group_params. Теперь он работает отлично. Если вы опубликуете свой комментарий в качестве ответа, я буду утверждать его как правильный ответ. Спасибо! – Jan
Добро пожаловать! Отправленный как ответ. – Anuja