我试图用评论来实现回复,所以当你点击"回复"部分应显示在当前评论下方。
所以在我的reply.js.erb中,我有
$("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('<%= @div_id %>')).show('fast');
其中@div_id是其回复的评论的分部ID。所以现在发生的事情是部分不会显示,而且它也隐藏了@div_id下面的内容。不知道发生了什么。
编辑:所以,我相信我弄明白为什么它被隐藏了。我在资产中有另一个名为comments.js.coffee的javascript文件,其中包含此 -
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)
&#34;的.comment&#34;是包含Reply链接的partial的标题。同一部分包含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
我将如何解决这个问题?
答案 0 :(得分:6)
@div_id
可能没有#
,因此在#
@div_id
之前的代码可能会有效
$("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('#<%= @div_id %>')).show('fast');
答案 1 :(得分:3)
您可以尝试以下方法吗?
$('<%= @div_id %>').append("<%= j render(:partial => 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").show('fast');
你可以试试append
吗?
答案 2 :(得分:2)
$("<%= j ( render partial: 'reply', :locals => { :comment => Comment.build_from(@obj, current_user.id, "") }) %>").insertAfter($('#<%= @div_id %>')).show('fast');
这将正常工作....只是语法上的改变