我试图通过 Ajax 破坏评论。在我的应用程序中,我的评论模型使用了多态关联。使用下面的代码成功删除评论(在数据库中)。但是,当我调用 destroy.js.erb 时,它什么也没做,我认为问题在于 dom_id 与 HTML id 不匹配,因此它没有更新。我想我正在经历@mu_is_too_short 在回答这个问题时所表达的同样的事情。不过,我需要有关如何解决此问题的帮助。我不知道解决方案是否涉及 a) 以某种方式将局部变量注释传递给 destory.js.erb 或 b) 另一个解决方案。
路线.rb
resources :feeds do
resources :comments
end
销毁.js.erb
$('#<%= dom_id(@comment) %>')
.fadeOut ->
$(this).remove()
_comment.html.erb
<div id=<%= dom_id(comment) %> class="comment">
<em>on <%= comment.created_at.strftime('%b %d, %Y at %I:%M %p') %></em>
<%= link_to "Remove", [@commentable, comment], :method => :delete, :remote => true %>
<%= simple_format comment.content %>
</div>
提要/show.html.erb
<div id="comments">
<%= render @comments %>
</div>
评论控制器
class CommentsController < ApplicationController
def create
@comment = @commentable.comments.new(params[:comment])
if @comment.save
respond_to do |format|
format.html { redirect_to @commentable }
format.js
end
else
render :new
end
end
def destroy
@comment = Comment.find(params[:id])
@commentable = @comment.commentable
if @comment.destroy
respond_to do |format|
format.html { redirect_to @commentable }
format.js
end
end
end
end
饲料控制器
class FeedsController < ApplicationController
def show
@feed = Feed.find(params[:id])
@commentable = @feed
@comments = @commentable.comments
@comment = Comment.new
end
end