class CommentsController < ApplicationController
def create
@commentable= context_object()
@comment = @commentable.comments.build(params[:comment].merge(:user_id => current_user.id))
if @comment.save
respond_to do |format|
format.js
end
else
render :action => 'new'
end
end
private
def context_object
params[:constraint][:context_type].singularize.classify.constantize.find( context_id )
end
def context_id
params["#{ params[:constraint][:context_type].singularize }_id"]
end
end
Этот модуль комментирования помог мне, но сегодня утром я столкнулся с проблемой, возможно, из-за того, что использовал вложенные ресурсы.По сути, теперь у меня есть URL-адрес:
/projects/3/albums/6/attachments/84
Когда я комментирую эту страницу, я получаю сообщение об ошибке:
ActiveRecord::RecordNotFound (Couldn't find Project without an ID):
app/controllers/comments_controller.rb:102:in `context_object'
app/controllers/comments_controller.rb:14:in `create'
Мой файл маршрутов выглядит так:
resources :projects do
resources : albums do
resources :attachments
end
end
resources :attachments do
resources :comments, :only => [:create, :update,:destroy],
:constraint => {:context_type => "conversations"}
end
Любые идеи о том, как заставить модуль комментирования хорошо играть с комментированием project>Album>Attachment
?
Спасибо за ввод,