나는 레일에 조금 새로운 것이므로 noobish 질문을 용서하십시오.레일 컨트롤러 id가 같음
사용자 섹션과 댓글 섹션이있는 mongoid를 사용하는 레일에 블로그 유형 응용 프로그램이 있습니다. (주석은 기사 내에 포함되어 있습니다). 그래서 내 의견 컨트롤러의 삭제 방법에 문제가있었습니다. 그들을 삭제하려면 내 컬렉션을 탐색하고 사용자가 클릭 한 ID를 찾고 params [: id]는 데이터베이스의 ID 인 comment.id와 같습니다. print 문을 사용하여이 작업이 가능하고 두 ID가 동일해야 함을 알 수있었습니다. 그러나 레일즈에서 equals 연산자 (==)를 사용할 때 어떤 이유 때문에 주석을 nil로 등록합니다.
도움이 될 것입니다.
def destroy
@article = Article.find(params[:article_id])
logger.debug(@article)
@article.comments.each do |comment|
logger.debug(comment)
print comment.id.
print ", "
print params[:id]
print " | "
if comment.id.equal? params[:id]
comment.destroy unless comment.nil?
end
end
respond_to do |format|
format.html { redirect_to "/" }
format.js
end
end
"# {comment.id.inspect}, # {params [: id] .inspect} |"는 id가 정수이고 param이 문자열 인 차이점을 보여줍니다. –
@MarlinPierce id in mongoid는 BSON 객체입니다. – apneadiving
후자는 몽구스에서 작동합니다. Ruby 1.9 해시 구문을 사용하여 @ article.comments.where (_id : params [: id]). 먼저 – novemberkilo