2017-05-09 1 views
0

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?

+0

Hallo, könnten Sie Ihre Update-Methode auch posten? – Jeremie

+0

Auf welcher Zeile wirft es Fehler? –

+0

Ja, eine vollständige Spur des Fehlers wird hilfreich sein – Jeremie

Antwort

0

Ich löschte die einzelnen Einstellungen, die ich gespeichert habe und lassen Sie einfach das Formular arbeiten seine Magie, das ist meine "neue" Methode, die ohne Fehler funktioniert.

Noch nicht sicher, warum es einen Fehler in erster Linie gab, aber solange es funktioniert, bin ich glücklich.

Verwandte Themen