Запрос 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');
Это будет работать правильно... просто синтаксическое изменение