I have article model and i want to show a notification such as a flash message on the home page to the users when they log in or who is logged in already when a new article is posted using private_pub gem
articles_controller.rb
class ArticlesController < ApplicationController
def index
@articles = Article.all
@articles_grid = initialize_grid(Article,
:include => [:user])
end
def show
@article = Article.find(params[:id])
@comment = Comment.new
end
def new
@article = Article.new
end
def create
@article = Article.new(params[:article])
@article.user_id = current_user.id
if @article.save
redirect_to articles_url, notice: 'Created article.'
PrivatePub.publish_to('articles/new', article: @article)
else
render :new
end
end
def edit
@article = Article.find(params[:id])
end
def update
@article = Article.find(params[:id])
if @article.update_attributes(params[:article])
redirect_to articles_url, notice: 'Updated article.'
else
render :edit
end
end
end
articles.js.coffee
PrivatePub.subscribe 'articles/new',(data, channel) ->
alert data.article.content
In my static_pages/home.html.erb
<%= subscribe_to '/articles/new' %>
when I create a new article it created successfully but nothing happen no notification
Have you included
//= require private_pub
in your application.js?Do you have have faye running?
rackup private_pub.ru -s thin -E production
Assuming that you have followed the instructions at https://github.com/ryanb/private_pub the way I would debug this is open the application in Google Chrome console and look at the network tab and websocket at the bottom to see if a connection was established. After that I would launch
rails console
and send a fewPrivatePub.publish_to('articles/new', article: 'hello world')
to see if they would come up in Chrome