将JS变量注入haml模板

时间:2012-04-16 20:14:47

标签: ruby html5 haml local-storage

我正在尝试使用带有Ruby haml模板的HTML5 localStorage,并且需要能够获取localStorage.getItem('myItem')的值以传递给java applet(代码被剥离):

- content_box("MyBox") do
  %object{:classid => "clsid:xxx"}
    %param{:name => "myItem", :value => "javascript:localStorage.getItem('myItem')"}
    %comment
      %EMBED{:myItem => "javascript:localStorage.getItem('myItem')"}
      %noembed

这样做有好办法吗?我可以这样做:

:javascript
  document.write("<param name='myItem' value="+localStorage.getItem('myItem')+">"

但那太难看了!

请注意,这是我正在嵌入的对象,需要在document_ready之前存在该值;我无法选择对象并在document_ready上将值附加到它。我能想到的唯一另一种方法是做一个ajax提交,使值提前变为Ruby变量,但这确实是不必要的。

谢谢!

2 个答案:

答案 0 :(得分:2)

有时,唯一有效的方法就是丑陋。

如果您的数据存储在客户端上,创建服务器请求/页面/操作只是为了获取数据并以不同的形式将其直接传回客户端是不可能的,并且可以说是丑陋的。

使用javascript添加<param>标记。

答案 1 :(得分:1)

如果对象依赖于JavaScript,你也可以用JavaScript而不仅仅是param来编写整个元素。然后你就可以在文件准备好了。