0

我使用 hyperstack.org 的安装说明对 hyperstack rails 应用程序进行了基本安装,尝试在回调中添加HTTP.get请求。after_mount

不太确定我还能尝试什么,认为 HTTP 将是一个标准选项

class App < HyperComponent
  include Hyperstack::Router

  after_mount do
    HTTP.get('/example.json')
  end

  render do
    DIV() do
      'App'
      # NodeDisplay
      # define routes using the Route psuedo component.  Examples:
      # Route('/foo', mounts: Foo)                : match the path beginning with /foo and mount component Foo here
      # Route('/foo') { Foo(...) }                : display the contents of the block
      # Route('/', exact: true, mounts: Home)     : match the exact path / and mount the Home component
      # Route('/user/:id/name', mounts: UserName) : path segments beginning with a colon will be captured in the match param
      # see the hyper-router gem documentation for more details
    end
  end
end

收到的错误是:

Uncaught error: HTTP: uninitialized constant App::HTTP
in App (created by Hyperstack::Internal::Component::TopLevelRailsComponent)
in Hyperstack::Internal::Component::TopLevelRailsComponent
4

1 回答 1

1

简单的回答:HTTP 库默认情况下不包含在 Opal 或 Hyperstack 中。

您可以将其作为 Opal jQuery 包装器的一部分包含在内,或者与最小的 OpalBrowser::HTTP库一起包含。

要将 jQuery 包装器添加到您的 Hyperstack 应用程序,请执行以下操作:


  1. import 'hyperstack/component/jquery', client_only: true
    通过添加到您的config/initializers/hyperstack.rb文件来导入 Hypestack jquery 包装器。

  2. 然后在您的资产中包含实际的 jquery javascript 代码:

    如果使用 webpackeryarn add jquery在您的终端中运行,然后将此行添加到javascripts/packs/client_only.js文件中: jQuery = require('jquery');

    如果使用 webpacker,则添加import 'jquery', client_only: true到超堆栈初始化程序文件中。

如果您只想使用更小的Browser::HTTP模块,请添加

import 'browser/http

到你的config/initializers/hyperstack.rb文件。

更改 hyperstack.rb 后,您必须通过运行清除 rails tmp 缓存rm -rf tmp/cache

注意:使用浏览器版本时,您需要使用Browser::HTTP而不是简单的HTTP.

于 2019-09-08T02:33:05.837 回答