RoR - Gerüst - unedfined Methode ‚to_sym‘ für nil: NilClass nur einen Fehler im Bearbeitungsverfahren
-
21-09-2019 - |
Frage
undefined method `to_sym' for nil:NilClass
Ich habe diesen Fehler nur in meiner bearbeiten Seite meiner nifty_scaffold.
Dies ist _form.html.erb
<% form_for @progress do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :date %><br />
<%= f.date_select :date %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p>
<%= f.label :weight %><br />
<%= f.text_field :weight %>
</p>
<p>
<%= f.label :fatpercentage %><br />
<%= f.text_field :fatpercentage %>
</p>
<p>
<%= f.label :height %><br />
<%= f.text_field :height %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>
Dies ist edit.html.erb
<% title "Edit Progress" %>
<%= render :partial => 'form' %>
Und das ist mein Controller:
class ProgressesController < ApplicationController
def new
@progress = Progress.new
end
def create
@progress = Progress.new(params[:progress])
if @progress.save
flash[:notice] = "Successfully created progress."
redirect_to progresses_url
else
render :action => 'new'
end
end
def edit
@progress = Progress.find(params[:id])
end
def update
@progress = Progress.find(params[:id])
if @progress.update_attributes(params[:progress])
flash[:notice] = "Successfully updated progress."
redirect_to progresses_url
else
render :action => 'edit'
end
end
def index
@progresses = Progress.all
end
end
Was könnte falsch sein? Ich kann nicht scheinen, um meine Fehler zu finden: ES. Es scheint, dass es: - holt die Daten korrekt -. Kann nicht die db-Werte in die „Bearbeitungsansicht“ Felder einfügen
Ich verwende: float,: string und: Datum als Datentypen in dem Gerüst.
Nur für das fertiggestellte Post, das ist mein Fehler: NoMethodError in # bearbeiten macht Fortschritte
Showing app/views/progresses/edit.html.erb where line #3 raised:
undefined method `to_sym' for nil:NilClass
Extracted source (around line #3):
1: <% title "Edit Progress" %>
2:
3: <% form_for @progress do |f| %>
4: <%= f.error_messages %>
5: <p>
6: <%= f.label :date %><br />
In Zeile 6 das Protokoll des Code Endes ...
Edit: Es scheint ein Fehler in meinem routes.rb zu sein. Dies wird zur Zeit kommentiert:
map.edit_progress "edit_progress", :controller => "progresses", :action => "edit"
, wenn ich Kommentar- es, es gibt einen Fehler auch in meiner Indexansicht.
Aus irgendeinem Grund heißt dies: ' http://127.0.0.1:3001/progresses/1/edit ', sollte es nicht sein: ‚ http://127.0.0.1:3001/progresses/edit/1 ‘? Auch wenn es scheint, dass die „Bearbeitungsansicht“ genannt wird ... Vielleicht ist dies der Grund, warum die Werte in meiner Ansicht nach nicht gefüllt sind, ...
Was meine Lösung sein könnte?
Lösung
Ich werde vorschlagen, zwei Schritt Debuggen hier:
-
Entfernen Sie den Code aus der Bearbeitungsansicht und ein etwas Klartext in ihm hinzuzufügen, greifen dann Ihre Seite im Browser und sehen, ob Sie einen Fehler oder ein neue Fehlermeldung erhalten oder keinen Fehler
-
Wenn Sie einen neuen Fehler bekommen, dann könnte es Ihnen helfen, in das Problem zu lösen oder in Ihrer Controller bearbeitet Aktion Erhöhung der @progress, um zu sehen, ob er eingestellt wird
def edit @progress = Progress.find(params[:id]) raise @progress.inspect end
Diese beiden Schritte können Ihnen helfen, das Problem bei der Lösung.