2012-04-10 7 views
0

Ich verwende Ruby-Schlüssel & Wert Felder, um eine jquery-Funktion in der Datenbank zu speichern und alles funktioniert gut, aber wie kann ich die Wertparameter trennen?Ruby-Schlüssel & Value?

def update_background 
    key = "#{current_user}.profile.background" 
    settings = Settings.find_by_key(key) || Settings.new(key: key) 
    settings.value = params[:bg_id], params[:color_id] 

    respond_to do |format| 
    format.json do 
     if settings.save 
     render text: "success" 
     else 
     render text: "failure" 
     end 
    end 
    end 
end 

Der obige Code funktioniert gut, aber das Problem ist mein CSS ist nicht richtig formatiert. Der Code sieht normalerweise so aus:

background: url(../assets/stripes.png rgb(76, 72, 128)) 

In meiner Hilfsdatei.

def saved_background 
    key = "#{current_user}.profile.background" 
    settings = Settings.find_by_key(key) 
    if settings 
    "url(#{settings.value})" 
    end 
end 

Wie kann ich trennen die 2 params in Wert, so dass mein Code wie

background: rgb(76, 72, 128) url(../assets/stripes.png) 

Antwort

1

Sie schauen im Grunde um ein Array zu settings.value speichern, und sie alle in der url Zeichenfolge verwendet wird.

Entweder trennen die Einstellungen in einzelne Werte oder jedes Element verwenden individuell:

"url(#{settings.value[0]}) #{settings.value[1]}" 

bearbeiten Ah, es ist ein AR-Feld - so ist es wahrscheinlich, als nur die Zeichenfolge rep gespeichert wird von das Array. Trivial zu überprüfen, und Sie sollten bereits haben.

Sie müssen es in dem Format speichern Sie es eigentlich - so:

settings.value = "url(#{params[:bg_id]}) #{params[:color_id]}" 

Und:

def saved_background 
    key = "#{current_user}.profile.background" 
    settings = Settings.find_by_key(key) 
    settings.value if settings 
end 
+0

nicht Ausgabewert, wenn das obige Verfahren verwenden, aber wenn Array-Index-Nummer entfernen Ich kann Wert sehen. Irgendwelche anderen Vorschläge? – coletrain

+0

@coletrain Aktualisiert; verpasst, es war ein AR-Feld. –