私のアプリはユーザーがいくつかの統計を送信するたびにテーブルの行を作成します。今私はいくつかの行を削除できるように削除ボタンを提供したいと思います。定義されていないメソッドnilのための `destroy ':NilClass
私は削除ボタンをクリックすると、私はエラーを取得する:どちらかのレールが何らかの理由、またはレールのために、この場合の破壊方法を理解していないよう
undefined method `destroy' for nil:NilClass
は、破壊するために何も表示されませんようです、したがって、Nil:NilClass。
私の最初の質問は、いずれかの場合に該当する場合を特定することです。
私の2番目の質問は、それを固定している:D
ここに私の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>
"<% = @status_updates%>レンダリング" _status_update部分を呼び出します。
<tr>
.
.
.
.
<% if current_user==(status_update.user) %>
<td>
<%= link_to "delete", status_update, method: :delete %>
</td>
<% end %>
</tr>
そして最後に、ここでStatusUpdateControllerここ
def destroy
@status_update.destroy
redirect_to root_url
end
では、エラーページのパラメータです:
{"_method"=>"delete",
"authenticity_token"=>"w9eYIUEd2taghvzlo7p3uw0vdOZIVsZ1zYIBxgfBymw=",
"id"=>"106"}
@status_updateがコントローラに定義されていません。パラメータ(params [:id])を使用して、またはリソースresource.destroyを使用してアクセスする必要があります。あなたのレーキルートをチェックして、何のパラメータを使うかを確認してください。 –
destroyメソッドの 'before_filter'に' @ status_update'を代入していますか?そうでない場合は、それがあなたの問題です。 –