2017-05-08 3 views
0

ich ein Dropdown-Menü haben:Populate zwei Datenbankwerte von einem Dropdown auswählen

<%= f.collection_select :price, Print.all, :printprice, :sizetotal, {prompt: "Pick A Size & Medium"} %> 

Aktuelle Zeit füllt die :price Datenbankspalte mit dem Wert :printprice, und zeigt den Wert :sizetotal in der aktuellen Drop-Down-Auswahl.

Ich möchte in der Lage sein, zwei Datenbankspalte zu füllen, eine davon ist die :price Säule, die bereits funktionieren, aber ich mag auch :size eine andere Spalte füllen mit dem Wert :printsize genannt. Ich möchte dies mit dem gleichen Dropdown-Auswahlmenü tun.

Etwas wie:

<%= f.collection_select :price, :size, Print.all, :printprice, :printsize, :sizetotal, {prompt: "Pick A Size & Medium"} %> 

Aber offensichtlich die oben nicht funktioniert

Ist das möglich?

+0

Hmm tun, man konnte nur 'collection_select: size' statt und dass der Preis in der Steuerung vor s zum Auffüllen verwenden es in das Modell integrieren? –

+0

Es würde klarstellen, einen einfachen Code-Extrakt Ihrer Print-Klasse zu haben, und vielleicht ein Beispiel-HTML-Code die gewünschte Auswahl. In jedem Fall würde ich vorschlagen, die ID Ihres Drucks als Wert in der Auswahl zu verwenden, so dass Sie auf der Controllerseite die entsprechenden Variablen finden und extrahieren können, die Sie benötigen. Oder Sie können eine Funktion verwenden, die sowohl Ihren "Preis" als auch "Größe" in einem einzigen Wert serialisiert und auf dem Backend deserialisiert. –

Antwort

0

Nach meinem Kommentar, hier ist die ID Alternative. Im Grunde wollen Sie nur die ID des Drucks zu senden, und finden Sie wieder das ganze Objekt auf dem Back-End während der #create oder #update Aktionen

print_for_size_and_price = Print.find(params[:print_id_for_size_and_price]) 

So auf dem Frontend ich so etwas wie diese

select_tag(
    :print_id_for_size_and_price, 
    options_from_collection_for_select(Print.all, :id, :sizetotal) 
) 
verwenden würde,

und im Backend würde ich irgendwo

my_instance.price = print_for_size_and_price.printprice 
my_instance.size = print_for_size_and_price.sizetotal 
Verwandte Themen