修正方法がわからないという問題が発生しています。削除ログアウト後にエラーを返すメソッドを削除する
私は、「新規」、「作成」、「完了」、「削除」、Devise認証などのメソッドでAJAX機能を持つ簡単なリストアプリケーションを持っています。
ユーザーと初めて新しいセッションを開始すると、これらの方法は問題なく動作します。さらに、タスクは完全なユーザーアカウントにのみ保存されます。
ただし、アカウントからログアウトしてから再度ログインすると、削除方法が機能しなくなります。私は、次のエラーが表示されます
ActiveRecord::RecordNotFound (Couldn't find Task with 'id'=)
私tasks_controller.rbは以下の通りです:
class TasksController < ApplicationController
def index
@task = current_user.tasks.all
end
def new
@task = Task.new
respond_to do |format|
format.js
format.html
end
end
def create
@task = current_user.tasks.new(task_params)
@task.save
respond_to do |format|
format.html
format.js
end
end
def update
@task = current_user.tasks.find(params[:id])
@task.toggle :complete
@task.save
respond_to do |format|
format.html
format.js
end
end
def destroy
@task = Task.find(params[:id])
@task.destroy
respond_to do |format|
format.js
format.html
end
end
private
def task_params
params.require(:task).permit(:id, :title, :complete)
end
end
私はこの問題を解決する方法を正確にはわかりません。誰がここで何がうまくいかないのか考えているだろうか?
EDIT:
私はインデックスページで、私が一番上にユーザのセッションを破壊するためのリンクを持っていることに気づい:
<%= link_to "Log Out", destroy_user_session_path, :method => :delete %>
レールはこれでいくつかの問題を抱えている場合、私は思ったんだけどログアウトリンクと削除リンクの両方が同じ方法を参照しているためです。もしそうなら、私はどのようにタスクの削除メソッドの名前を変更できますか?
<div class="delete"><%= link_to "X", task_path(@task), method: :delete, remote: true %></div>
byebugをビューに入れ、@taskの値を確認してください。整数型ではないと思います。 –
'@ task'はどこで定義されていますか? –
@JagdeepSinghどういう意味ですか?私は上手く理解できていない気がします。 – snovosel