Ich habe eine harte Zeit zu versuchen, herauszufinden, wo dieser Fehler herkommt ... versuchen, Benutzern die Option zu geben ändere einige Details in meiner Rails 5 App. Der Code funktioniert, was der frustrierendste Teil ist. Es funktioniert, es aktualisiert die Datenbank, aber es wirft auch eine "undefined Methode` [] 'für Nil: NilClass "-Fehler.Nicht definierte Methode `[] 'für nil: NilClass, aber der Wert wird trotzdem in der Datenbank gespeichert
Dies ist meiner Ansicht nach:
<%= form_for @setting, url: {action: "new"} do |f| %>
<p>Site Name: <%= f.text_field :site_name %></p>
<p>City Name: <%= f.text_field :location %></p>
<%= f.submit %>
<% end %>
Hier ist die "neue" Aktion in der Steuerung, denselben Code in "update" auch:
def new
@settings = Setting.first
@settings.site_name = params[:setting][:site_name]
@settings.location = params[:setting][:location]
@settings.save
redirect_to admin_url
end
und die Aktualisierungssteuerung:
Meine Datenbank hat eine Settings-Tabelle mit "site_name" und "location" als zwei Spalten.
Hier ist der vollständige Fehler:
NoMethodError in AdminController#new
undefined method `[]' for nil:NilClass
Extracted source (around line #29):
27 @settings = Setting.first
28
29 @settings.site_name = params[:setting][:site_name]
30 @settings.location = params[:setting][:location]
31 @settings.save
Alles, was ich in beide der Formen geben wird in die Datenbank aufgenommen, unabhängig von den Fehlern so scheint es, wie der Code richtig funktioniert, aber es ist immer noch einen Fehler zu werfen. Was vermisse ich?
Hallo, könnten Sie Ihre Update-Methode auch posten? – Jeremie
Auf welcher Zeile wirft es Fehler? –
Ja, eine vollständige Spur des Fehlers wird hilfreich sein – Jeremie