Запрос AJAX скрывает текст, а не помещает частичный

Я пытаюсь реализовать ответы с комментариями, поэтому, когда вы нажимаете "ответить", частичное должно отображаться под текущим комментарием.

Итак, в моем answer.js.erb у меня есть

$("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('<%= @div_id %>')).show('fast');

Где @div_id - это идентификатор раздела для комментария, на который он отвечает. Итак, что происходит прямо сейчас, так это то, что частичное не будет отображаться, а также скрывает содержимое под @div_id. Не уверен, что происходит.

EDIT: Итак, я считаю, что я понял, почему он скрыт. У меня есть другой файл javascript в активах, называемых comments.js.coffee, который содержит это -

jQuery ->
  $(document)
    .on "ajax:beforeSend", ".comment", ->
      $(this).fadeTo('fast', 0.5)
    .on "ajax:success", ".comment", ->
      debugger;
      $(this).hide('fast')
    .on "ajax:error", ".comment", ->
      debugger;
      $(this).fadeTo('fast', 1)

". comment" - это заголовок для частичного, который содержит ссылку Reply. Тот же самый частичный содержит ссылку Destroy. Так почему-то, когда я нажимаю "Ответить", он также запускает этот код, который впоследствии скрывает комментарий. Здесь мои частичные для комментариев

%div.comment{ :id => "comment-#{comment.id}" }
    %hr
    = link_to "×", comment_path(comment), :method => :delete, :remote => true, :confirm => "Are you sure you want to remove this comment?", :disable_with => "×", :class => 'close'
    %h4
        = comment.user.first_name
        %small= comment.updated_at
    %p= comment.body
    %p= link_to "Reply", comment_reply_path(comment), :method => :get, :remote => true

Как я могу это исправить?

Ответы

Ответ 1

Может быть, @div_id не имеет с ним #, поэтому ниже код может работать после добавления # до @div_id

$("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('#<%= @div_id %>')).show('fast');

Ответ 2

Можете ли вы попробовать следующее?

$('<%= @div_id %>').append("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").show('fast');

Обновлено:

попробуйте append вместо этого?

Ответ 3

$("<%= j ( render partial: 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('#<%= @div_id %>')).show('fast');

Это будет работать правильно... просто синтаксическое изменение