Ruby on rails 安全的雇员再培训局语言?
我想知道是否有一个安全的模板可以重新组装ERB。ERB非常容易使用,但在CMS中使用它的致命部分是过于强大的访问(你可以在几秒钟内用它写一些非常讨厌的东西…),所以我想知道这种语言是否存在 请不要使用半径/液体。。。。。为此编写扩展太麻烦了,模板语法本身不是我喜欢的。。。如果可能的话,我想避免它 更新:这并不完美(因为它不是erb),但似乎比液体要好得多:Ruby on rails 安全的雇员再培训局语言?,ruby-on-rails,security,templates,Ruby On Rails,Security,Templates,我想知道是否有一个安全的模板可以重新组装ERB。ERB非常容易使用,但在CMS中使用它的致命部分是过于强大的访问(你可以在几秒钟内用它写一些非常讨厌的东西…),所以我想知道这种语言是否存在 请不要使用半径/液体。。。。。为此编写扩展太麻烦了,模板语法本身不是我喜欢的。。。如果可能的话,我想避免它 更新:这并不完美(因为它不是erb),但似乎比液体要好得多: 你必须使用Lua作为模板,但是Lua已经比使用液体(它禁用你做一个简单的赋值语法)要好很多了。它“使用rubyracer绑定到handle
你必须使用Lua作为模板,但是Lua已经比使用液体(它禁用你做一个简单的赋值语法)要好很多了。它“使用rubyracer绑定到handlebar.js的实际JavaScript实现,以便您可以从ruby使用它。”
下面是他们的示例代码:require 'handlebars'
handlebars = Handlebars::Context.new
template = handlebars.compile("{{say}}{{what}}")
template.call(:say => "Hey", :what => "Yuh!") #=> "Hey Yuh!"
虽然你写了“请不要,我不要半径/液体”,但我不理解你的不情愿。只需转到页面,看看它有多简单:
gem install liquid
下面是一个示例片段:
<ul id="products">
{% for product in products %}
<li>
<h2>{{ product.title }}</h2>
Only {{ product.price | format_as_money }}
<p>{{ product.description | prettyprint | truncate: 200 }}</p>
</li>
{% endfor %}
</ul>
你也应该考虑:
您让最终用户自己输入模板语言代码?我不知道你想在这里完成什么。一个托管的CMS,允许具有一些HTML知识的设计师创建自己的模板,而不需要做rm-rf。在您的文件系统中。是的-我让最终用户(web管理员)来完成他们自己的模板,这就是为什么像LiquidMarkup这样的库存在的全部原因。不幸的是,liquid标记是一种非常糟糕的语言——大多数人放弃了php smarty风格的模板引擎,liquid实际上重新组装了它。你对liquid有什么看法?你想扩展它做什么?@goodwill:laminate是好是坏可能是一个没有意义的问题——它看起来不会在3年内得到维护。我不同意goodwill对液体的厌恶,但Handlebar.rb吸引我的原因是我可以使用相同的模板语言(可能是相同的模板)服务器端和客户端都允许
{%product.destroy%}
或类似的{{product.connection.password}
?
Liquid::Template.parse(template).render 'products' => Product.find(:all)
Mustache.render("Hello {{planet}}", :planet => "World!")
=> "Hello World!"