我有一个发布到PubSub的咖啡功能,并且还将创建的元素附加到列表中
handle_comments = ->
commentId = $('.question_comments').data('commentId')
PrivatePub.subscribe commentId, (data, channel) ->
res = $.parseJSON(data.comment_res.comment)
result = JST["templates/create_comment"]
user_name: data.comment_res.user
comment_body: res.body
comment_id: res.id
$('.question_errors').html("")
$('.comments_list').append(result)
$('.new_comment').find('#comment_body').val('')
$(document).ready(handle_comments)||$(document).on('page:load', handle_comments)||$(document).on('page:update', handle_comments)
现在我遇到一个问题,即每次我在页面上改变smth时都会执行此功能(比如删除节点或其他)。我需要一种方法来设置它只在创建注释时执行。 附:处理程序就绪,页面:加载和页面:更新设置为避免turbolinks的问题。抱歉我的英语不好。非常感谢每一条建议
答案 0 :(得分:0)
我发现最简单的方法是在控制器动作中设置一个标志
PrivatePub.publish_to "/questions/#{@commentable.id}/comments", comment_res: { comment: @comment.to_json, user: current_user.name, **method: self.action_name** }
甚至更简单的可执行文件:true(有点类似于remote:true :)) 如果您确实知道其他一些变体,我会非常好奇地看到它们