在VoltRb

时间:2015-06-22 21:50:47

标签: html ruby opalrb voltrb

我试图通过opal-browser将一个元素附加到Volt项目中的一个页面,如下所示:

if RUBY_PLATFORM == 'opal'
  require 'browser'
  $document.body << my_dom_element.to_n
end
# controller code below

不幸的是,我收到了错误:

[Error] TypeError: null is not an object (evaluating 'value.nodeType')
    (anonymous function) (main.js, line 7772)

我追加的DOM元素非常完美。它只是以下代码:

document.createElement( 'myElement' )

我假设Volt不喜欢我将元素附加到控制器中的页面,而不是在视图HTML文件中手动创建它。有没有办法可以解决这个问题?我需要做这个附加元素的东西,以便与我和Volt一起使用的另一个库兼容。

1 个答案:

答案 0 :(得分:1)

好的,问题是编译后的.js文件加载后你的代码就被加载了。一旦DOM准备就绪,您需要运行代码。在伏特中执行此操作的简单方法是在{action} _ready方法:

上运行它
module Main
  class MainController < Volt::ModelController
    def index_ready
      # run view code here
    end
  end
end

在呈现索引视图并且dom准备就绪后,将调用index_ready方法。