Добрый день, господа. Настиг следующий казус:
Метод контроллера работает через ajax:
def create
@comment = @commentable.comments.new(comment_params)
@comment.user = current_user
respond_to do |format|
if @comment.save
format.js do
PrivatePub.publish_to "/comments", comment: @comment.to_json,
comment_author: @comment.user.email.to_json
render nothing: true
end
else
format.json { render json: { errors: @comment.errors.full_messages } }
end
end
end
Обрабатывающий ответ js-файл:
ready = ->
PrivatePub.subscribe '/comments', (data, channel) ->
comment_author = $.parseJSON(data['comment_author'])
comment_body = $.parseJSON(data['comment']).body
commentable_id = $.parseJSON(data['comment']).commentable_id
commentable_type = $.parseJSON(data['comment']).commentable_type
$( '.' + commentable_type + '-comments#' + commentable_id).append(JST["templates/comment"]({comment_author: comment_author, comment: comment_body}))
$('textarea#comment_body').val('')
$(document).ready(ready)
$(document).on('page:load', ready)
$(document).on('page:update', ready)
При первом переходе на нужную страницу и вызове метода, js выполняется несколько раз, т.е добавляется несколько комментов (в базу добавляется как положено, один). Если перезагрузить страницу и выполнить метод - все работает как задумано. В чем может быть проблема и как победить? Заранее спасибо за внимание)