设置仅在create上执行的事件侦听器

时间:2016-08-18 20:00:58

标签: ruby-on-rails coffeescript publish-subscribe

我有一个发布到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的问题。抱歉我的英语不好。非常感谢每一条建议

1 个答案:

答案 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 :)) 如果您确实知道其他一些变体,我会非常好奇地看到它们