La mia app crea correttamente righe per un tavolo ogni volta che un utente invia alcune statistiche. Ora voglio fornire un pulsante di cancellazione per poter cancellare alcune righe.metodo undefined `destroy 'per nil: NilClass
quando clicco sul pulsante Elimina ottengo l'errore:
undefined method `destroy' for nil:NilClass
Sembra come sia binari non capisce il metodo destroy in questo caso per qualsiasi motivo, o rotaie non vede nulla di distruggere, da qui il nulla: NilClass.
La mia prima domanda è identificare quale è il caso, se uno di quelli.
La mia seconda domanda è fissandolo: D
Ecco la mia 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>
Il "<% = rendono @status_updates%>" chiama la _status_update parziale.
<tr>
.
.
.
.
<% if current_user==(status_update.user) %>
<td>
<%= link_to "delete", status_update, method: :delete %>
</td>
<% end %>
</tr>
E poi finalmente, ecco la StatusUpdateController
def destroy
@status_update.destroy
redirect_to root_url
end
Qui ci sono i parametri sulla pagina di errore:
{"_method"=>"delete",
"authenticity_token"=>"w9eYIUEd2taghvzlo7p3uw0vdOZIVsZ1zYIBxgfBymw=",
"id"=>"106"}
@status_update non è definito nel controller. È necessario accedervi tramite parametri (parametri [: id]) o se si utilizzano risorse, resource.destroy. Controlla i tuoi percorsi di rake per assicurarti quali parametri utilizzare. –
Stai assegnando '@ status_update' in un' before_filter' per il tuo metodo destroy? Altrimenti, è qui che si trova il tuo problema. –