web push serviceworker undefined方法错误?

时间:2017-04-23 10:41:38

标签: jquery ruby-on-rails ruby web-push

每当我尝试启动服务器时,都会收到此错误...

where

application.rb中

undefined method `post' for main:Object (NoMethodError)

我将代码块放在错误的位置吗?我认为post "/push" do Webpush.payload_send( endpoint: "https://fcm.googleapis.com/gcm/send/eah7hak....", message: "A message", p256dh: "BO/aG9nYXNkZmFkc2ZmZHNmYWRzZmFl...", auth: "aW1hcmthcmFpa3V6ZQ==", vapid: { subject: "mailto:sender@example.com", public_key: ENV['VAPID_PUBLIC_KEY'], private_key: ENV['VAPID_PRIVATE_KEY'] } ) end app.rb

相同

enter image description here

屏幕截图来自git tutorial:https://github.com/zaru/webpush

我尝试使用VAPID和宝石application.rb& webpush

的application.js

serviceworker-rails

1 个答案:

答案 0 :(得分:1)

将其添加到控制器中的简单示例。

首先,使用动作的名称创建控制器(我将使用push,按照您的示例):

$ rails g controller Test push

这将创建一个测试控制器,并将更新您的路线:

# app/controllers/test_controller.rb

class TestController < ApplicationController
  def push
  end
end

# config/routes.rb

get 'test/push'

接下来使用您要添加的代码更新控制器:

class TestController < ApplicationController
  def push
    Webpush.payload_send(
      message: params[:message],
      endpoint: params[:subscription][:endpoint],
      p256dh: params[:subscription][:keys][:p256dh],
      auth: params[:subscription][:keys][:auth],
      vapid: {
        subject: "mailto:sender@example.com",
        public_key: ENV['VAPID_PUBLIC_KEY'],
        private_key: ENV['VAPID_PRIVATE_KEY']
      }
    )
  end
end

并更新您的路线以使用post代替get

post 'test/push'

这样你就可以使用POST yoursite / test / push 端点(就像app.rb的例子一样)。