用户生成内容中的可变插值

时间:2017-02-13 13:22:04

标签: ruby-on-rails ruby

比如说,我正在为一家餐馆建立自己的CMS,我有一个页面,网站所有者可以进入并为每一餐通过后端管理自己的描述。

我们还假设每餐都有与之相关的名称和价格。

我怎样才能让所有者继续进行输入:

<%= @food.name %> is made from the freshest ingredients and sells for <%= @food.price %>

我是否可以稍微扩展一下并介绍内容块的概念(类似于Wordpress中的短代码),他们也可以将<%= show_reviews %>等内容放入他们自己的内容中?

如果是这样,我将如何使用用户生成的内容完全迷失方向。

1 个答案:

答案 0 :(得分:4)

允许用户执行ruby代码可能非常危险。我会创建一组映射。例如:

  • [food.name]将替换为@food.name
  • [food.price]会 被@food.price
  • 取代

我会明确使用gsub将所有[food.name]替换为@food.name。总之,我认为对您想要实现的目标最安全的方法是将用户将使用的替换模式列入白名单,并将gsub全部列入白名单。