Прежде всего, да, публикация уведомления с after_create
- это нормально. Что вы должны сделать в своем методе notify_subscribers
, это опубликовать всю соответствующую информацию о новом сообщении, которое вы хотите использовать в клиенте, чтобы вы не должны были сделать еще один ненужный AJAX-запрос при уведомлении получено.
Так, например, если title
и content
сообщения релевантны для просмотра пользователем сразу после его создания, вы должны сделать что-то вроде:
def notify_subscribers
client = Faye::Client.new('http://localhost:3000/faye')
client.publish("/posts/new", {
'title' => self.title,
'content' => self.content
})
end
... и тогда, по-видимому, вы, вероятно, использовали бы jQuery для использования данных о новом сообщении, которое вы получаете с сервера. Код Rails вам здесь не поможет. Например. Вы бы сделали это (при условии, что вы используете jQuery и включили faye.js в свой заголовок):
<script type="text/javascript">
$(function() {
var client = new Faye.Client('http://localhost:3000/faye');
client.subscribe("/posts/new", function(data) {
/* do whatever you need with data */
});
});
</script>
Наконец, если каким-то образом информация, которую вы хотите передать, слишком сложна для передачи как часть уведомления, или у вас уже есть существующие процессы AJAX для обновления вашего представления, вы можете просто опубликовать идентификатор сообщения и инициировать вызов AJAX с помощью jQuery. в функции обратного вызова subscribe
. Я бы порекомендовал это только в случае необходимости.