accepts_nested_attributes_for и выберите тег - PullRequest
0 голосов
/ 20 января 2010

У меня есть модель комнаты и модель персонажа.

В комнате может быть много человек, а в одной комнате может быть человек.

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

Я не знаю, как создать тег выбора.

Может ли кто-нибудь помочь

спасибо ...

У меня есть следующие ассоциации

class Room < ActiveRecord::Base
  has_many :people
  accepts_nested_attributes_for :people
end

class Person < ActiveRecord::Base
  belongs_to :room
end

Я использую частичную для строительства комнаты / новая форма

<% form_for(@room) do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :date %><br />
    <%= f.date_select :date %>
  </p>
  <% f.fields_for :people do |builder| %>
    <p>
      <%= builder.label :person_id, "Person" %><br />
      <%= select 'room', 'people', Person.all.collect{|person| [person.name, person.id]}%>
    </p>
  <% end %>
  <p>
    <%= f.label :comment %><br />
    <%= f.text_area :comment %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Приятно ... и быстрый ответ, спасибо!

вот проверенный код, который будет правильным

  <% f.fields_for :people do |builder| %>
    <p>
      <%= builder.label :person_id, "Person" %><br />
      <%= builder.collection_select :person_id, Person.all, :id, :name, {:multiple => true} %>
    </p>
  <% end %>
2 голосов
/ 20 января 2010

Посмотрите на модуль ActionView :: Helpers :: FormOptionsHelper . Он предоставляет метод collection_select.

Этот фрагмент делает то, что вы ищете:

<% form_for(@room) do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :date %><br />
    <%= f.date_select :date %>
  </p>
  <p>
    <%= f.label :people_ids, "Person" %><br />
    <%= collection_select :people_ids, Person.all, :name, :id, {:multiple => true} %>
  </p>

  <p>
    <%= f.label :comment %><br />
    <%= f.text_area :comment %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...