我在我的 rails 应用程序中与dailyposts 和评论有一个多态关联
数据库中一切正常,但是当我尝试将 Ajax 添加到 Destroy Action 时(我使用了本教程http://railscasts.com/episodes/136-jquery-ajax-revised)......它不起作用除非我刷新页面。(但我的警报在 destroy.js.erb 中有效)
我知道我的错误在 destroy.js.erb
Rails 新手...请帮助:)
这是我的代码...
路线
resources :dailyposts do
resources :comments
end
控制器
##Dailyposts
class DailypostsController < ApplicationController
respond_to :html, :js
def show
@user = User.find_by_username(params[:username])
@dailypost = Dailypost.find_by_id(params[:id])
@commentable = @dailypost
@comments = @commentable.comments.arrange(:order => :created_at)
@comment = Comment.new
end
end
##Comments
class CommentsController < ApplicationController
before_filter :load_commentable
respond_to :html, :js
def create
@comment = @commentable.comments.create(params[:comment])
@comment.user = current_user
if @comment.save
respond_to do |format|
format.html { redirect_to @commentable }
format.js
end
else
redirect_to @commentable, notice: "Comment can't be blank."
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
private
def load_commentable
resource, id = request.path.split('/')[1, 2]
@commentable = resource.singularize.classify.constantize.find(id)
end
end
意见
Dailypost show.html.erb
<div class="row-fluid">
<div class="span12">
<div>
<%= raw(dailypost_with_links(@dailypost)) %>
</div>
<%= render "comments/form" %>
<div id="comments">
<%= nested_comments @comments %>
</div>
</div>
</div>
_comment.html.erb
<section class="comments">
<div class ="user">
<%= link_to comment.user.username, comment.user %>
<%= comment.content %>
</div>
##Here I am passing remote: true for ajax
<% if current_user?(comment.user) %>
<%= link_to content_tag(:i, "", class: "icon-trash icons"), [@commentable, comment], method: :delete,
data: { confirm: "Are you sure?" },
title: "Delete", remote: true %> |
<% end %>
</section>
销毁.js.erb
##alert is working
alert('ajax works!');
$('#<%= dom_id(@comment) %>').remove();
日志
Started DELETE "/dailyposts/11/comments/133" for 127.0.0.1 at 2013-08-04 23:06:31 -0700
Processing by CommentsController#destroy as JS
Parameters: {"dailypost_id"=>"11", "id"=>"133"}
Dailypost Load (0.3ms) SELECT "dailyposts".* FROM "dailyposts" WHERE "dailyposts"."id" = ? ORDER BY dailyposts.created_at DESC LIMIT 1 [["id", "11"]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'sgFH2XeZWEXCcjxiAwgfXg' LIMIT 1
Comment Load (0.2ms) SELECT "comments".* FROM "comments" WHERE "comments"."id" = ? LIMIT 1 [["id", "133"]]
Dailypost Load (0.1ms) SELECT "dailyposts".* FROM "dailyposts" WHERE "dailyposts"."id" = 11 ORDER BY dailyposts.created_at DESC LIMIT 1
(0.1ms) begin transaction
Comment Load (0.1ms) SELECT "comments".* FROM "comments" WHERE (comments.ancestry like '133/%' or comments.ancestry = '133')
SQL (0.4ms) DELETE FROM "comments" WHERE "comments"."id" = ? [["id", 133]]
(2.3ms) commit transaction
Rendered comments/destroy.js.erb (0.7ms)
Completed 200 OK in 25ms (Views: 10.3ms | ActiveRecord: 3.9ms)