Ajaxを介してコメントを破棄しようとしています。私のアプリでは、コメントモデルはポリモーフィックな関連付けを使用しています。コメントは、以下のコードを使用して(データベース内で)正常に削除されます。ただし、destroy.js.erbを呼び出すと、何も実行されません。問題は、dom_idがHTML IDと一致しないため、更新されないことだと思います。私は、@mu_is_too_shortがこの質問への回答で明確に述べたのと同じことを経験していると思います。しかし、これを解決する方法について助けが必要です。解決策にa)ローカル変数コメントをdestory.js.erbに渡すか、b)別の解決策が含まれるかどうかはわかりません。
ルート.rb
resources :feeds do
resources :comments
end
destroy.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>
feeds / 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