0

これは完全に機能していましたが、何が起こったのかわかりません。

エラーは次のとおりです。

ActiveRecord::RecordNotFound at /status_updates/92
Couldn't find User with id=92

ActiveRecord::RecordNotFound at /status_updates/delete_all
Couldn't find User with id=delete_all

何が起こるかというと、多くのステータス更新があるユーザーがいます。ここでの92は、このユーザーに属するステータス更新92を参照する必要があります。

私はこれに直接関連するコードを変更していないので、コーヒースクリプトで行おうとした変更と関係があるのではないかと思います。(gemファイルから削除してbundle installを実行した後、削除せずに実行することにしたので、gemファイルに戻し、bundle installを再度実行しました...これで完了です。)

とにかく、show.htmlにいて、いずれかの削除ボタンをクリックすると、エラーが発生します。単一のstatus_updateの場合はdelete_allまたはdeleteのいずれか。

これが、私がまったく変更しなかったこれらすべてのコントローラーメソッドです。

def show
 @user = User.find(params[:id])
 @status_updates = @user.status_update
end

def destroy
 @status_update.destroy
 flash[:success] = "Status update deleted!"
 redirect_to status_update_path(current_user.id)
end

def delete_all
 @all_status_updates = current_user.status_update
 @all_status_updates.delete_all
 flash[:success] = "All status updates deleted!"
 redirect_to status_update_path(current_user.id)
end 

私のコンソールでは、このユーザーを検索して、ステータスの更新を確認できます。ステータスの更新は、期待どおりにすべて表示されます。これは良いことです。

しかし、ActiveRecordはそれらすべてを突然見つけることができませんか?

そうそう..これがdelete_allボタンのstatus_updatesに関連する私のgemファイルです

resources :status_updates do 
 collection do 
   delete :delete_all
 end
end 

削除ボタンは次のようになります。

 <%= link_to "delete", status_update, method: :delete %> 
 <%= link_to "Reset Log", delete_all_status_updates_path, method: :delete, data: { confirm: "Are you sure? Once this log is reset there is no going back!"}%> 

私はそれらをそこに置いて、彼らの道を示しました。

これにより、セキュリティで保護されていない状態で実行する代わりに、テストを記述してすべての作業をgitにプッシュするように教えられます:/

ありがとう!

4

1 に答える 1

0

最初の問題は、JavaScriptが適切に有効になっていない可能性が高いことです。Railsでは、deleteメソッドはjavascriptを介して実行されます。レイアウトとにすべてのjsファイルが正しく含まれていることを確認してくださいapplication.js。プロトタイプまたはjqueryのいずれかが必要です。

于 2013-01-05T01:06:01.897 に答える