2017-04-18 10 views
0

私は私のおもちゃのレールのアプリに簡単なActionCableを追加し、私はユニットテストの私のレールを起動したとき、私はActionCable NoMethodエラー

Error: ProductsControllerTest#test_should_update_product: NoMethodError: undefined method server' for ApplicationCable:Module app/controllers/products_controller.rb:53:in block in update'

app/controllers/products_controller.rb:44:in `update' 
test/controllers/products_controller_test.rb:44:in `block in <class:ProductsControllerTest>' 

を得ていることを発見しました。エラーが発生するのは唯一の時間です。 マイコード:

products_controller_test:

test 'should update product' do 
    patch product_url(@product), params: { product: @update } 
    assert_redirected_to product_url(@product) 
    end 

のconfig/application.rb

require 'action_cable' 

/app/channels/application_cable/channel.rb

module ApplicationCable 
    class Channel < ActionCable::Channel::Base 
    end 
end 

/アプリ/チャンネル/application_cable/connection.rb

module ApplicationCable 
    class Connection < ActionCable::Connection::Base 
    end 
end 

/app/channels/products_channel.rb

class ProductsChannel < ApplicationCable::Channel 
    def subscribed 
    stream_from 'products' 
    end 

    def unsubscribed 
    # Any cleanup needed when channel is unsubscribed 
    end 
end 

/app/assets/javascripts/channels/products.coffee

App.products = App.cable.subscriptions.create "ProductsChannel", 
    connected: -> 
    # Called when the subscription is ready for use on the server 

    disconnected: -> 
    # Called when the subscription has been terminated by the server 

    received: (data) -> 
    $(".store #main").html(data.html) 

/app/controllers/products_controller.rb

# PATCH/PUT /products/1 
    # PATCH/PUT /products/1.json 
    def update 
    respond_to do |format| 
     if @product.update(product_params) 
     format.html do 
      redirect_to @product, notice: 'Product was successfully 
      updated.' 
     end 
     format.json { render :show, status: :ok, location: @product } 

     @products = Product.all 
     ApplicationCable.server.broadcast 'products', 
              html: render_to_string('store/index', 
                   layout: false) 
     else 
     format.html { render :edit } 
     format.json { render json: @product.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

ありがとうございました!

答えて

1

in products_controller.rb。 ApplicationCable.server.broadcastの代わりに「ActionCable.server.broadcast」を使用する必要があります

楽しくお楽しみください!

関連する問題