Rails: проблема jQuery Ajax с частичным обновлением раздела комментариев - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть раздел комментариев, который публикуется только после обновления всей страницы. Хотя после публикации страница обновляется сама по себе, она неэффективна для обновления всей страницы. Мне было интересно, если кто-нибудь может помочь мне с файлом JS, который обновит только эту часть, я все еще шокирую с моим JS. Любая помощь высоко ценится! Спасибо!

Это мои текущие js для create.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 Ответ

1 голос
/ 28 февраля 2012

Вы должны использовать что-то подобное в вашем контроллере.Это будет запускать шаблоны 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 на уровне URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...