2014-03-31 43 views
0

當我嘗試提交註釋時出現錯誤。 - ActiveRecord的:: RecordNotFound在CommentsController#指數 - 我跟着thisthis教程無法找到沒有ID的註釋 - 多態關聯

的網址是:

.../articles/1/comments 

comments_controller

class CommentsController < ApplicationController 
before_action :set_comment 
before_action :signed_in_user, only: [:new] 

def index 
    @commentable = load_commentable 
    @comments = @commentable.comments 
end 

... 

def create 
    @comment = @commentable.comments.new(comment_params) 
    @comment.user = current_user 

if @comment.save 
    redirect_to @comment, notice: "Comment created." 
else 
    render :new 
end 
end 

.... 

private 

def load_commentable 
    resource, id = request.path.split('/')[1, 2] 
    @commentable = resource.singularize.classify.constantize.find(id) 
end 

def set_comment 
    @comment = Comment.find(params[:id]) 
end 
.... 

Full trace:

+0

你可以在問題中分享完整的錯誤堆棧跟蹤,這將有助於調試。 –

+0

我加了全部跟蹤 – Absurdim

+0

看到我的回答,並記下'UPDATE'部分。 –

回答

1

按堆棧跟蹤,錯誤出現在set_comment方法中。

您必須在set_comment上有回調before_action這不應該在那裏爲index操作。您應該僅限於相關操作。

例如:

before_action :set_comment, only: [:show, :edit, :update, :destroy] 

所以這個回調將only被調用爲show, edit, update and destroy行動。

UPDATE

目前回調設置爲before_action :set_comment沒有任何限制,因此將每一個動作之前被調用。所以,按照上面的建議更新它。