基本的に、コメントを追加できるカテゴリがあります。このカテゴリには、タスクのリストが表示されます。コメントを追加すると、そのコメントに返信することができます。追加して返信リンクにカーソルを合わせると、次のように表示されます。
http://localhost:3000/categories/2/category_comments/new?parent=6
次に、そのIDを取得して返信フォーラムに渡し、データベース内の祖先文字列に割り当てて、返信を「ネスト」します。問題は、親IDがフォームに渡されていないことです。フォームの非表示フィールドは空白です。なんで?次のコードで、このIDがたどるパスをたどることができます。
カテゴリ_コントローラー
def show
@category = Category.find(params[:id])
@category_comment = @category.category_comments.build
end
これにより、カテゴリページにコメントが表示され、返信するコメントのparent_idがフォームに渡されます。
[返信]をクリックすると、以下に示すcategory_comments#new
と#create
メソッドがトリガーされます。
category_comments_controller
def new
@category = Category.find(params[:category_id])
@category_comment = @category.category_comments.build(:parent_id => params[:parent_id])
end
def create
@category = Category.find(params[:category_id])
@category_comment = @category.category_comments.create(params[:category_comment].merge(:user_id => current_user.id))
if @category_comment.save
redirect_to project_category_path(@category.project, @category), :flash => {:success => 'Created comment'}
else
redirect_to :back, :flash => {:error => 'Could not create comment'}
end
end
アップデート:
これはもはやフォームの問題ではなく、parent_idをフォームに渡すことを扱うコントローラーの問題です。