Ich hoffe meine Frage ist nachvollziehbar, sonst bin ich froh zu klären.Tricky Ruby auf Schienen Problem. Gibt es eine einfache Lösung?
Wir haben dieses Sportereignis vor uns, und ich habe das Vergnügen, die Leute zu registrieren. :)
Fakten:
- kann man ein Team von 5-10 Personen haben.
- Müssen Sie wissen, in welcher Reihenfolge die Leute anfangen.
- Wissen, wer der Teamleiter ist.
Ich habe eine Form, in der folgenden Art:
o [____Write first name here___]
< --- Dies ist ein Textfeldo [____Write second name here__]
o [___________ ... ____________]
- ...
Das "o" ist ein Radio-Button, mit dem der Teamleiter ausgewählt wird.
Ich habe ein Modell Person und ein Modell -Team. Jedes Team hat eine leader_id (das ist eine der Personen-IDs). Außerdem jedes Team :has_many
Personen.
In der Steuerung Ich habe
def create
@team = Team.new(params[:team])
@team.save #just assume there are no errors
end
Nach Ansicht I (für die Radio-Buttons) haben:
<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.
Meine Frage: Was soll ich bei **????**
setzen?
Ich kenne die IDs der Personen noch nicht, da sie nicht erstellt wurden. Ich muss dort eine Meta-ID anlegen, welcher Ruby auf Rails erkennt und alles korrekt verlinkt?
Sie müssen den Rest nicht lesen (es den Hack beschreibt Ich verwende)
Wie gesagt, im Moment habe ich eine hässliche Hack so mache: zuerst die Teams speichern (ohne Erzeugung ein Führer), dann das gleiche Team aus der DB holen, seine Menschen bekommen, und die erste Person den Wert von
params[:team][:leader_id].
Schließlich Speicher dieser Person ID im Bereich der leader_id des Teams finden. |
Aber dieser Code ist ineffizient, riesig und fehlerhaft, dass ich vermute, dass es einen einfacheren Weg gibt.
danke. Ich habe meinen Beitrag aktualisiert. Dummer Fehler, Problem bleibt. :) – jacob
nur um zu verdeutlichen: ruby on rails setzt team.leader_id auf was auch immer ich im Attribut "value" angegeben habe. Bei Ihrem Beispiel könnte das zum Beispiel "1" sein, wenn ich den zweiten wähle. Aber ich möchte wirklich die ID der Person in diesem Feld haben, und nicht 1. – jacob
die ID kann mit meinem Beispiel von params [: team] [: persons] [params [: team] [: persons_attributes] [: leader_id]] [: id] - ich werde meine Antwort aktualisieren, um sie ausführlicher zu erklären. –