Я получаю ошибку JS Opal.const_get_relative не является функцией при компиляции ruby ​​в js - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть функция Ruby, переведенная в JS Opal, которая всегда работала нормально, но внезапно перестала работать.Консоль JS выдает мне это сообщение об ошибке

Opal.const_get_relative is not a function

Оригинальный код Ruby - это

Document.ready? do
  Element.find('#button_id').on :click do

, что переводится как

  return $send(Opal.const_get_relative($nesting, 'Document'), 'ready?', [], (TMP_1 = function(){var self = TMP_1.$$s || this, TMP_2;

  return $send(Opal.const_get_relative($nesting, 'Element').$find("#button_id"), 'on', ["click"], (TMP_2 = function(){var self = TMP_2.$$s || this, TMP_3, postcode_value = nil, blokouderling = nil, content = nil, wijk = nil, naam = nil, email = nil, $writer = nil;

Любая идея, что идет не так

1 Ответ

0 голосов
/ 21 ноября 2018

Самый простой способ скомпилировать приложение опал в файл вне Rails - это создать файл JavaScript с Opal::Builder, вот простой пример с Opal и jQuery:

gem 'opal', '~> 0.11.4'
gem 'opal-jquery', '~> 0.4.3'

require 'opal'
require 'opal-jquery'

app_html = <<-HTML
  <html><head>
  <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
  <script src="app.js"></script>
  </head><body></body></html>
HTML

app_code = <<-RUBY
  Document.ready? do
    alert('hello world!')
  end
RUBY

builder = Opal::Builder.new
builder.build('opal')
builder.build('opal-jquery')
builder.build_str app_code, 'app.rb'

File.write 'app.js', builder.to_s
File.write 'app.html', app_html

В этот момент вы можете просто открыть app.html в своем браузере, чтобы увидеть сообщение «привет мир», всплывающее в предупреждении.

...