2012-04-01 14 views
0

Ich bin neu in Rails so sei sanft. Ich habe ein Modell "Event" mit den folgenden Informationen: "Sport", "Home_team", "away_team" und "time" in datetime.Rails Dependent Form - Auswahl eines bestimmten Elements aus einem Modell

Jetzt möchte ich dem Benutzer ermöglichen, einem bestimmten Ereignis zu folgen und versuche, den besten Weg zu finden. Im Idealfall möchte ich ein Formular mit abhängigen Dropdown-Listen. Zum Beispiel wählt der Benutzer zuerst einen "Tag", dann einen "Sport" aus und wählt dann aus einer relevanten Liste von "Ereignissen" dieses "Tages" und "Sport" aus. Diese Zuordnung wird dann in einer Rich-Join-Tabelle mit dem Namen 'following' gespeichert.

Ich habe Tutorials zu komplexen Formularen mit mehreren Modellen gesehen, aber was ist, wenn alles vom selben Modell stammt? Wie erstellt man ein Formular, um eine Handvoll relevanter Datensätze zu erfassen? Ich habe nur ein paar unterschiedliche Werte für "Sport", also war ich mir nicht sicher, ob es sinnvoll ist, ihr ein eigenes Modell zu geben. Und kann ich leicht Ereignisse zu einem bestimmten Datum von einem "Datetime" -Wert erhalten?

Antwort

0

Es gibt viele Möglichkeiten, dies zu tun, hier ist eine Option: Da Sie mehrere Ereignisse sehen möchten, würden Sie wahrscheinlich beginnen, konzentrierte sich auf die Indexaktion. Beginnen Sie mit der Erstellung und Index Aktion aus, aber einige Haken hinzufügen, um es zu filtern, dh

def index 
    if params[:sport] 
    @events = Event.where("sport = ?",params[:sport]) 
    else 
    @events = Event.all() 
    end 
end 

Nun, wenn Sie Ihre Routen wie folgt definiert haben:

Ressourcen: Veranstaltungen

Sie über Haben Sie eine Route/Ereignisse, die eine Get-Anfrage akzeptieren und Sie zur Index-Aktion leiten.

Aber wenn Sie ein Formular möchten, wo Sie die Dinge auswählen, eine Form von Standard-POST, aber Sie können ein Formular erstellen, die 'Ereignisse /' zu GETs

dh in app/views/events/index. html.erb

<%= form_tag '/events', :method=>:get %> 

Dann möchten Sie Ihre Formularelemente erstellen, die die Parameter senden werden.

dh

<%= select_tag 'sport', '<option>baseball</option><option>football</option>' %> 

in einer Schaltfläche

<%= submit_tag 'See Events' 

Dann einreichen Put 'Ende' Formular mit

<% end %> 

Nun, wenn Sie auf die Schaltfläche Schaltfläche 'Ereignisse anzeigen', Sie senden eine Anfrage an die Route '/ events', und der Parameter 'sport' wird in der Indexaktion angezeigt und filtert die Ereignisse.

Um die Dinge einfach und alle in der Indexansicht zu halten, würden Sie nach dem Formular alle Ereignisse auflisten.

<% @events.each do |e| %> 
    Sport: <%= e.sport %><br/> 
    Home Team: <%= e.home_team %><br/> 
    Away Team: <%= e.away_team %><br/> 
    Time: <%= e.time.strftime('%H %M') %><br/> 
<% end %> 
Verwandte Themen