2015-05-23 7 views
0

Я начинаю рельсы, и перед вами стоит основная проблема. Я нашел пару решений, но ни один из них не полностью описывает мою проблему. У меня есть две модели: контакт и группуПодключение двух моделей принадлежит_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?

Я знаю, что это основные вопросы, но я застрял и довольно новичок в рельсах. Спасибо за вашу помощь!

+0

Я пробовал код и его работу отлично. Я могу сохранить контакт с group_id без каких-либо изменений в вашем коде. Пожалуйста, проверьте еще раз. Вы получаете group_id в параметрах в контроллере? – Anuja

+0

Как вы указали, код работает. Как вы сказали, я забыл включить group_id в контроллеры group_params. Теперь он работает отлично. Если вы опубликуете свой комментарий в качестве ответа, я буду утверждать его как правильный ответ. Спасибо! – Jan

+0

Добро пожаловать! Отправленный как ответ. – Anuja

ответ

0

Я пробовал код и его работу отлично. Я могу сохранить контакт с group_id без каких-либо изменений в вашем коде. Пожалуйста, проверьте еще раз. Вы получаете group_id в параметрах в контроллере?

0
<%= f.select :group_id, options_from_collection_for_select(Group.all, , 'id', 'name') %> 

Это поможет вам.

 Смежные вопросы

  • Нет связанных вопросов^_^