TideSDK |在JavaScript中访问Ruby变量

时间:2012-09-10 12:59:18

标签: tidesdk

我无法在tideSDK应用程序中访问JavaScript中的ruby变量。我正在使用的SDK版本是1.2.0.RC4的当前最新版本。这是一个基本的例子:

<!DOCTYPE html>
<html>
<head>
  <title>Hello World</title>
  <style type="text/css">
    body {background: #fff;}
  </style>
</head>
<body>
  <h1>Hello World</h1>

  <script type="text/python">
      helloP = "Hello from Python!";
  </script>

  <script type="text/ruby">
      $helloR = "Hello from Ruby!";
  </script>

  <script type="text/php">
      $helloPHP = "Hello from PHP!";
  </script>

  <script type="text/javascript">  
      alert("Hello from JavaScript!");
      alert(helloP);
      alert(helloPHP);
      alert(helloR);
  </script>
</body>
</html>

在这个例子中,我已经声明并赋值给python,PHP和ruby变量。 JavaScript alert()函数适用于python和PHP变量,但不适用于ruby变量。所以,提醒(helloP);和警报(helloPHP);工作并显示带有这些变量内容的弹出对话框,但不显示任何警告(helloR)。

另一方面,JavaScript可以看到ruby函数。因此,如果ruby_function是ruby函数,则在JavaScript警报(ruby_function())中工作。

那么,JavaScript如何看待ruby变量?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

这在1.2版本中不起作用。

你需要在包含文件中使用ruby,而不是内联。

然后按预期工作。

在Resources文件夹中:index.html

<html>
    <head>
        <script>
         Titanium.include("ruby.rb");
        </script>
    </head>
<body style="background-color:#ccc;margin:0">
</body>
</html>
<script>
  console.log(window.crim);
  console.log(crim);
  alert(crim.foo);
</script>
资源文件夹中的

:ruby.rb

window.crim = {
  'foo' => 'bar'
}

请参阅https://wiki.appcelerator.org/display/guides/Using+Titanium+Desktop+with+Ruby - 查找标题 Titanium Desktop 1.2.0.RC1 SDK及更新版下的信息。