2010-06-17 4 views
2

Прямо сейчас, я нахожусь в середине создания приложения управления проектами, и я вроде как застрял в пути, я должен построить эту форму. На момент добавления проекта я хотел бы выбрать клиентов, которые будут включены в проект. Вот код, несколько вещей, представляющих интерес:Комплексные формы в рельсах (has_and_belongs_to_many)

Проект модели миграции проекта Клиенты Модель Клиенты миграции Clients_Projects таблицы миграции

http://pastebin.com/280MjR8i

Что бы наилучший подход по созданию контроллера/View до сих пор у меня есть это для представления, но я понятия не имею, что должно быть на контроллере ->

http://pastebin.com/dHa8nAQZ

ответ

6

Я бы использовал для этого вложенные атрибуты. Ознакомьтесь с railscast Райана Бейтса http://railscasts.com/episodes/196-nested-model-form-part-1 и http://railscasts.com/episodes/197-nested-model-form-part-2.

Вы можете добавлять и удалять клиентов для проекта, используя этот метод. Использование списка флажков для выбора клиентов может быть проблематичным для большого числа клиентов.

+0

Большое спасибо, эти скринкасты спас мою жизнь :) – Gotjosh

2

В контроллере, вы должны указать .permit, что список идентификаторов является массивом:

def client_params 
    params[:client].permit(
    :name, 
    :address, 
    :phone, 
    {:project_ids => []} 
), 
end 

Тогда Rails магия будет работать.

Источник: https://coderwall.com/p/_1oejq

+0

Brilliant! Просто и легко! –

+2

'{}' не требуются, по крайней мере, в рельсах 4 просто: project_ids => [] работает –