Ich bin neu bei Schienen und ich habe eine ziemlich einfache Situation zu lösen, aber ich kann nicht herausfinden, wie ich damit verfahren soll.Schienen: einfaches "Einstellungs" -Modell mit Schlüssel, Wertattribute
Ich möchte ein einfaches 'Setting' Modell mit key, value
Attributen erstellen. 'SettingsController' darf nur zwei öffentliche Methoden enthalten: index
und update
. Nur index
Aktion wird eine Ansichtsdatei mit einem Formular haben, dessen Felder jeden Datensatz der Tabelle 'Einstellungen' darstellen.
Ich möchte in der Lage sein, einige zulässige Schlüssel zu definieren (kann eine private Methode verwenden), und ich möchte das Formular zum Erstellen oder Aktualisieren des Datensatzes der relevanten Felder beim Senden des Formulars an update
Aktion.
Nun, ich weiß nicht genau, welchen Code sollte ich in der Steuerung verwenden für index
und update
Aktionen und in der Index-View-Datei für das Formular, das/update mehrere Datensätze gleichzeitig erstellen und aktualisierte Werte zeigen, können alle die Zeit. Wie gehe ich damit vor?
Update # 1:
Ich habe es geschafft, wie unten einige Controller-Aktionen schreiben (basierend auf einigen Tutorial):
class Admin::SettingsController < ApplicationController
def index
@settings = Setting.all
end
def update
setting_params.each do |key, value|
Setting.where(key: key).first.update_attribute :value, value
end
redirect_to admin_settings_path, notice: "Settings saved."
end
private
def setting_params
params.require(:settings).permit(:site_title, :site_desc)
end
end
Der Formularcode in Indexansicht Vorlage ist unten angegeben:
<h1>Settings</h1>
<%= form_tag admin_settings_path, method: "put" do %>
<p>
<label>Site Title:</label>
<%= text_field_tag "settings[site_title]" %>
</p>
<p>
<label>Site Description:</label>
<%= text_field_tag "settings[site_desc]" %>
</p>
<p>
<%= submit_tag "Save settings" %>
</p>
<% end %>
Diese Formulare speichert die Werte korrekt in der Datenbank, aber die gespeicherten Werte bestehen bleiben nicht in Formularfeldern.
Warum enthalten Sie nicht, was Code Sie bereits geschrieben haben, damit wir sehen können, wie Sie über Ihr Problem denken. – MarsAtomic
Ich habe es geschafft, Code basierend auf Tutorials zu schreiben (Beitrag wurde oben aktualisiert), aber da meine Anforderungen etwas anders sind als das Tutorial, das mir vorschwebt, gespeicherte Werte in Formularfeldern beizubehalten. –
Sind Sie offen für die Verwendung eines Edelsteins, um zu bekommen, was Sie wollen, oder sind Sie entschlossen, Ihren eigenen Mechanismus von Grund auf neu zu erstellen? – MarsAtomic