Rails:jQuery Ajax问题,部分刷新评论部分

时间:2012-02-28 02:57:16

标签: ruby-on-rails ajax ruby-on-rails-3 jquery

我目前有一个评论部分,仅在整个页面刷新后发布。虽然在帖子之后页面本身刷新,但整个页面刷新效率低下。我想知道是否有人可以帮助我使用js文件来刷新那部分,我仍然与我的js摇摇欲坠。任何帮助深表感谢!谢谢!

这是 create.js 的当前js:

$("#comments").html("<%= escape_javascript(render(:partial => @micropost.comments)) %>");

评论控制器

class CommentsController < ApplicationController 
  def create
    @micropost = Micropost.find(params[:micropost_id])
    @comment = @micropost.comments.build(params[:comment])
    @comment.user_id = current_user.id
    @comment.save 
      respond_to do |format|
      format.html 
      format.js
    end
  end
end

评论栏

<div id='CommentContainer-<%= micropost.id%>' class='CommentContainer Condensed2'>
<div class='Comment'>
<%= render :partial => "comments/form", :locals => { :micropost => micropost } %>
</div>
<div id='comments'>
<%=render micropost.comments %>
</div>
</div>

1 个答案:

答案 0 :(得分:1)

你应该在你的控制器中使用这样的东西。这将根据需要触发js和html模板。

class CommentsController < ApplicationController 
  respond_to :html
  respond_to :js, only: [ :create ]

  def create
    # ...
    respond_with @comment if @comment.save
  end

  def index
    @comments = Microcomment.find(params[:id]).comments
    respond_with @comments
  end
end

然后,这将要求views / comments / create.js回复类似:

// create.js.erb
$("#comments").get("/api/micropost/<%= @micropost.id %>/comments");

评论的观点为index.html.erb

# index.html.erb
<% @comments.each do |comment| %>
  <!-- Display your comment here -->
<% end %>

现在,您只需在路线中为match设置/api/micropost/:id/comments,然后就可以按照所需的html格式提供评论列表。

请注意,这并非完全安静,但我希望保留/api以区分来自网址级别的xhr的来电。