ich Einstellungen Controller Setup wie diese haben:Rails form_tag nicht den vorhandenen Feldwert anzeigt
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 Index Aktion eine View-Datei in den entsprechenden Pfad hat, ist ihr Code wie folgt:
<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 %>
Jetzt kann ich diese Felder Daten in relevanten Modell speichern und aktualisieren, und ich kann die Daten über den Befehl Setting.all
in Rails-Konsole sehen. Aber das Problem ist, nach dem Speichern des Datensatzes über das Formular, wenn ich die Einstellungen Indexseite neu laden das Formular leer ist und es zeigt nicht zuvor gespeicherte Werte in den Feldern.
Was mache ich hier falsch?
Können wir nicht in den Feldern mit form_tag Helfer Wert persistent zu machen. Zweitens habe ich versucht, form_for helper mit der @setting-Variable zu verwenden, aber es heißt "Das erste Argument in der Form kann kein nil enthalten oder leer sein". –