Надеюсь, мой вопрос понятен, иначе я буду рад прояснить.Tricky ruby on rails problem. Существует ли простое решение?
У нас есть это спортивное мероприятие, и я с удовольствием регистрирую людей. :)
Факты:
- один может иметь команду из 5-10 человек.
- Необходимо знать порядок, в котором люди начинают.
- Необходимо знать, кто лидер команды.
Я сделал форму в следующем стиле:
o [____Write first name here___]
< --- это текстовое полеo [____Write second name here__]
o [___________ ... ____________]
- ...
«o» - это кнопка радиоприемника, используемая для выбора руководителя команды.
У меня есть модель Лицо и модель Команда. Каждая команда имеет leader_id (который является одним из идентификаторов личности). Кроме того, каждая команда :has_many
человек.
В контроллере у меня есть
def create
@team = Team.new(params[:team])
@team.save #just assume there are no errors
end
По мнению у меня есть (для кнопок радио):
<input id="team_leader_id_**????**"
name="team[leader_id]"
type="radio"
value="**????**"
/>
<input id="team_leader_id_**????**"
name="team[leader_id]"
type="radio"
value="**????**"
/>
# etc.
Мой вопрос: Что я должен поставить в **????**
?
Я еще не знаю идентификаторов лиц, так как они не были созданы. Мне нужно добавить там мета-идентификатор, который рубин на рельсах распознает и правильно связывает?
Вы не должны читать остальные (он описывает хак я использую)
Как уже говорилось, на данный момент я делаю безобразный хак: сначала сохранить команду (без генерации лидер), а затем извлечь ту же команду из БД, получить его людей, и найти первое лицо сопрягая значение
params[:team][:leader_id].
Наконец сохранение ID этого человека в поле leader_id команды.
Но этот код неэффективен, огромен и глючен, что я подозреваю, что есть более простой способ.
спасибо. Я обновил свой пост. Глупая ошибка, проблема остается. :) – jacob
просто для уточнения: ruby on rails устанавливает team.leader_id в том, что я указал в атрибуте value. В вашем примере это может быть, например, «1», если я выберу второй. Но я действительно хочу иметь идентификатор человека в этом поле, а не 1. – jacob
идентификатор может быть получен с использованием моего примера параметрами [: team] [: persons] [params [: team] [: persons_attributes] [: leader_id]] [: id] - я уточню свой ответ, чтобы объяснить более подробно. –