Выберите элемент ввода, используя f.select () элементов, связанных таблицей ссылок (в Rails) - PullRequest
0 голосов
/ 27 июля 2010

У меня есть форма для экземпляра "проекта". Каждый проект может иметь много клиентов. Каждый клиент представляет собой уникальную пару организации и человека (контактное лицо).

Итак, у проекта много-много-много отношений с Клиентом. Клиент имеет отношения многие-к-одному с организацией и отношения многие-к-одному с организацией.

См. Изображение схемы модели: http://dl.dropbox.com/u/631919/erm.png

На странице редактирования проекта я хотел бы иметь возможность изменить организацию для каждого клиента через раскрывающееся меню выбора, но у меня возникают проблемы с отображением организаций в выбранном элементе ввода.

Вот что у меня есть:

<% form_for(@project) do |f| %>

  <% @project.clients.each do |client| %> 

    <%= f.select("client.organization_id", Disclosure.all.collect {|d| [d.color.titlecase, d.id] }) %>   

  <% end %>

<% end %>

Я знаю, что это неправильно, но я не знаю, как получить требуемое раскрывающееся меню выбора, которое представляет собой меню выбора, в котором организация, связанная с каждым клиентом, является выбором по умолчанию.

Любая помощь?

Ответы [ 2 ]

1 голос
/ 27 июля 2010

Ваша схема мне кажется несколько странной ... но в любом случае ..

Если вы хотите перечислить все организации в списке и выбрать текущую по умолчанию, попробуйте следующее:

<%= f.select("client.organization_id", Organization.all.collect {|o| [o.name, o.id] }) %>

Текущий client.organization_id должен быть выбран, если это действие покоя редактирования.См. Ниже.

Из документов: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M002302

Пример с @ post.person_id => 1:

 select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, { :include_blank => true })

может стать:

<select name="post[person_id]">
    <option value=""></option>
    <option value="1" selected="selected">David</option>
    <option value="2">Sam</option>
    <option value="3">Tobias</option>
  </select>
0 голосов
/ 27 июля 2010
<% form_for(@project) do |f| %>

  <% @project.clients.each do |client| %> 
    <% fields_for :client, client do |c| %>
      <%= collection_select(client, :organization_id, ORganization.all, :id, :name) %>   
    <% end %>
  <% end %>

<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...