rhtml到javascript的模板

时间:2013-05-30 17:02:13

标签: javascript ruby-on-rails ruby template-engine

我正在使用旧版本的rails(1.2.6)和没有javascript模板系统的项目。我想在服务器上(例如在rhtml视图中)和客户端上呈现相同的HTML(例如,当用户动态地向表中添加行时)。

因此,例如,我有一部分呈现一行输入字段:

<tr><td><input /></td></tr>

这在服务器上运行良好。我的计划是在display: none div中呈现它以便jQuery在用户想要添加行时查找和克隆。

不幸的是,当我在div中只渲染一个<tr>节点时,可以预见,DOM不包含这些元素。由于这种行为,这种jQuery克隆方法无法工作。

如何在服务器和客户端之间共享生成<tr>的代码?

1 个答案:

答案 0 :(得分:1)

您可能遇到的问题是<div>不是permitted parent for a <tr>

  

允许的父元素

     

table,thead,tfoot,tbody

因此,浏览器会将损坏的<div><tr>...</tr></div> HTML更正为您无法使用的内容。使用style="display: none"仅隐藏用户的<div>,它不会隐藏浏览器中的<div>

通过浏览器隐藏HTML片段的常用方法是使用带有非HTML type的{​​{3}}作为容器。你想要这样的东西进入浏览器:

<script id="pancakes" type="text/x-template">
    <tr><td><input /></td></tr>
</script>

然后,您可以在jQuery中使用$('#pancakes').html()作为纯文本。


您可能想要与某人谈论升级到更新版本的Rails,他们知道在这样一个古老且不受支持的Rails版本中有哪些漏洞和漏洞。随着时间的推移,升级只会越来越难。