Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 安全的雇员再培训局语言?_Ruby On Rails_Security_Templates - Fatal编程技术网

Ruby on rails 安全的雇员再培训局语言?

Ruby on rails 安全的雇员再培训局语言?,ruby-on-rails,security,templates,Ruby On Rails,Security,Templates,我想知道是否有一个安全的模板可以重新组装ERB。ERB非常容易使用,但在CMS中使用它的致命部分是过于强大的访问(你可以在几秒钟内用它写一些非常讨厌的东西…),所以我想知道这种语言是否存在 请不要使用半径/液体。。。。。为此编写扩展太麻烦了,模板语法本身不是我喜欢的。。。如果可能的话,我想避免它 更新:这并不完美(因为它不是erb),但似乎比液体要好得多: 你必须使用Lua作为模板,但是Lua已经比使用液体(它禁用你做一个简单的赋值语法)要好很多了。它“使用rubyracer绑定到handle

我想知道是否有一个安全的模板可以重新组装ERB。ERB非常容易使用,但在CMS中使用它的致命部分是过于强大的访问(你可以在几秒钟内用它写一些非常讨厌的东西…),所以我想知道这种语言是否存在

请不要使用半径/液体。。。。。为此编写扩展太麻烦了,模板语法本身不是我喜欢的。。。如果可能的话,我想避免它

更新:这并不完美(因为它不是erb),但似乎比液体要好得多:

你必须使用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!"