2011-01-13 9 views
0

Ich habe ein Modell "MyObject", das eine Eigenschaft namens "color" enthält, dieser Eigenschaftswert wird aus der Liste von FARBEN = ['rot', 'schwarz', 'gelb'] ausgewählt. In meiner Anwendung habe ich eine Instanz von "MyObject" aus der Datenbank abgerufen und auf der Seite als Zeile angezeigt. Ich benutze den "select" -Formularhelfer in Schienen 3 und erlaubte dem Benutzer, die Farbe aus einem Dropdown-Menü auszuwählen.Neuling Frage: Warum geht der ausgewählte Wert aus dem Dropdown-Menü nicht an meinen Controller?

verwenden ich die Form Helfer auf diese Weise:

select("myobject", COLORS, { :include_blank => false }),

Auf der Ansichtsseite, ich mit dem Standardwert als die ausgewählten erfolgreich die Farben als Dropdown-Menü.

ABER, wenn ich eine andere Farbe aus dem Menü und drücken Sie die Schaltfläche "Speichern" wählen, das "myobject" an meinen Controller übergeben immer den Standardfarbwert statt der ausgewählten, warum?

Ich verwende button_to("save", myobject_path(myobject), :method=>:put), die das Objekt an meinen Controller übergeben wird.

in der Seite meiner Controller, Update-Methode:

class MyobjectsController < ApplicationController 
... 
def update 

    @myobject = myobject.find(params[:id]) 

    if @myobject.update_attributes(params[:myobject]) 
     puts @myobject.color #always get default value 
     redirect_to myobject_path 
    else 
     redirect_to myobject_path 
    end 
    end 
... 
end 

Wer kann mir erklären, warum ich an Stelle des ausgewählten immer Standard-Farbwert bekommen?

Antwort

0

Ohne den vollständigen Ansichtscode zu sehen, bin ich mir nicht sicher, aber höchstwahrscheinlich ist es, dass Ihr Formular, das die <select> enthält, nicht tatsächlich eingereicht wird und dass button_to einfach sein eigenes Formular erstellt und absendet. Sie sollten die myobject_path(myobject), :method => :put auf das Formular selbst, nicht die Schaltfläche senden. Und verwenden Sie nicht button_to dafür, verwenden Sie oder etwas.

+0

Hallo, ich habe kein Formular verwendet, weil ich nur die Farbeigenschaft meines Objekts in einem Dropdown-Menü-Stil angezeigt werden muss. Meine Objektinstanz wird in einer Tabellenzeile und nicht in einem Formular angezeigt. Nur 'color' Eigenschaft muss in einem