Meine App erstellt erfolgreich Zeilen für eine Tabelle jedes Mal, wenn ein Benutzer einige Statistiken übermittelt. Jetzt möchte ich eine Lösch-Schaltfläche zur Verfügung stellen, um einige Zeilen löschen zu können.undefined Methode `destroy 'für Nil: NilClass
Wenn ich auf die Schaltfläche Löschen klicken erhalte ich die Fehlermeldung:
undefined method `destroy' for nil:NilClass
wie entweder Schienen scheint die aus irgendeinem Grund Methode in diesem Fall zerstören nicht versteht, oder Schienen sehen nicht, etwas zu zerstören, daher das Nil: NilClass.
Meine erste Frage ist zu identifizieren, was der Fall ist, wenn einer von denen.
Meine zweite Frage ist Fixierung: D
Hier ist mein show.html:
<% provide(:title, "Log") %>
<% provide(:heading, "Your Progress Log") %>
<div class="row">
<div class="span8">
<% if @user.status_update.any? %>
<h3>Status Updates (<%= @user.status_update.count %>)</h3>
<table>
<thead>
<tr>
<th>Entry Date</th>
<th>Weight</th>
<th>BF %</th>
<th>LBM</th>
<th>Fat</th>
<th>Weight Change</th>
<th>BF % Change</th>
<th>Fat Change</th>
</tr>
</thead>
<tbody class = "status updates">
<%= render @status_updates %>
</tbody>
<% end %>
</div>
</div>
Die "<% = render @status_updates%>" ruft der _status_update Teil.
<tr>
.
.
.
.
<% if current_user==(status_update.user) %>
<td>
<%= link_to "delete", status_update, method: :delete %>
</td>
<% end %>
</tr>
Und dann endlich, hier ist die StatusUpdateController
def destroy
@status_update.destroy
redirect_to root_url
end
Hier sind die Parameter auf der Fehlerseite:
{"_method"=>"delete",
"authenticity_token"=>"w9eYIUEd2taghvzlo7p3uw0vdOZIVsZ1zYIBxgfBymw=",
"id"=>"106"}
@status_update ist in Ihrem Controller nicht definiert. Sie müssen über Parameter (params [: id]) darauf zugreifen oder wenn Sie resources.destroy verwenden. Überprüfen Sie Ihre Rake-Routen, um sicher zu gehen, welche Parameter verwendet werden sollen. –
Ordnen Sie '@ status_update' in einem' before_filter' für Ihre Methode desintroduction zu? Wenn nicht, dann ist das dein Problem. –