所以我有一个解决方案,但我想得到一些意见,看看是否有更好的方法来做到这一点。与Rails和Javascript共享模板
我的问题基本上是我列出的数据,将通过RoR加载生成,然后有JS控件来查看子集。我宁愿不必支持基本相同的HMTL的两个版本。所以我的解决办法是这样的,我有一个部分是红宝石看起来是这样的:
<% value1 = jsmode ? '#{value1}' : object.value1
value2 = jsmode ? '#{value2}' : object.value2 $>
<div class="object_template">
<div><$= value1 $></div>
<div><%= value2 %></div>
</div>
所以,当我使局部红宝石,我通过一个false jsmode,它呈现像一个正常部分。然后,我将渲染局部再次用带有模板ID的div包装,但这次使用的是真正的jsmode。这将使用#{}字符串呈现html。然后我就可以通过模板为原型模板对象是这样的:
new Template($('template')).evaluate({value1: '111', value2: '222'});
所以我的问题是,是否有更好的方法来做到这一点?
我知道我可以使用#{}构造将变量传递给RoR,如果我用双引号包装它们,但我需要#{}来呈现JS模板。
想法?
这是我想做的一种,但我担心模板上的换行符。我还没有测试过,但将escape_js转换成一行? – Rodrigo 2009-10-05 13:13:15
只是添加到我的评论。 JS没有HEREDOC构造。我想要做的某种 HEREDOC 渲染部分 HEREDOC 我发现是人们说使用HTML的。 – Rodrigo 2009-10-05 13:14:57
我编辑了我的帖子,阐明了escape_javascript的工作原理。 – 2009-10-05 13:32:25