2017-11-27 2 views
-2

Es gibt viele Möglichkeiten, ein Dropdown in Rails zu erstellen. Und es ist nicht klar, warum es so viele gibt und welche idiomatisch ist.Wie generiert man ein Dropdown in Rails 5, was ist der idiomatische Weg?

Ich verwende Rails 5x und den integrierten Formularhelfer.

<%= form_for(@my_model, :url => some_url(@my_model)) do |f| %> 
    <%= f. # ?? f.select ?? f.collection_select ?? or anything else? 

Was ist der idiomatische und empfohlene Weg?

Beachten Sie, dass ich kein externes Juwel wie Simple_form verwenden möchte.

+2

Es ist vor allem eine Frage darüber, wo Sie Ihre Optionsliste für dieses Dropdown speichern werden? – AntonTkachov

Antwort

0

collection_select soll verwendet werden, wenn die Liste der Elemente ein Array von ActiveRecord-Objekten ist. collection_select ist auf der Oberseite von select gebaut, so ist es eine bequeme Methode, wenn Sie eine Auflistung von Objekten und nicht ein Array von Zeichenfolgen anzeigen müssen.

Sie können here für detaillierte Antwort beziehen.

0

Wählen Sie - für grundlegende Verwendung. Zum Beispiel in diesem Fall müssen Sie Wert manuell hinzuzufügen:

<%= f.select(:name, :some_id, [['Emma', 1], ['Oliver', 2]) %> 

Aber wenn Sie Modell mit Daten für diesen Wert haben, können Sie collection_select verwenden:

<%= collection_select(:something, :id, User.all, :some_id, :name) %> 

aktualisieren

Beispiel für Ihren Kommentar:

<%= options_for_select(
    [ 
    ['Emma', 1, { 'data-attr' => '200ms' }], 
    ['Oliver', 2, { 'data-attr' => '400ms' }] 
    ], 2 # selected options id 
) %> 

HTML Ergebnis:

<option value="1" data-attr="200ms">Emma</option> 
<option value="2" selected="selected" data-attr="400ms">Oliver</option> 
+0

Was ist 'options_for_select' für? – Joddy

+0

@Joddy können Sie beliebige Attribute hinzufügen und "ausgewählt" für die Option festlegen. Überprüfen Sie die Antwort erneut, ich fügte ein Beispiel hinzu. –

Verwandte Themen