Private pub issue in rails application

2019-08-23 14:58发布

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

1条回答
爷、活的狠高调
2楼-- · 2019-08-23 15:28

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 few PrivatePub.publish_to('articles/new', article: 'hello world') to see if they would come up in Chrome

查看更多
登录 后发表回答