2017-02-13 38 views
1

說例如我正在爲一家餐廳構建自己的CMS,並且我有一個頁面,網站所有者可以進入併爲通過後端管理的每頓飯寫下自己的描述。用戶生成內容中的變量插值

我們還假設每餐都有與之相關的名稱和價格。

我怎麼可能讓主人先走,並輸入類似:

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

難道我還要說有些並引入內容塊的概念(類似於WordPress的簡碼),他們也可能會下降在<%= show_reviews %>之類的東西中放入自己的內容呢?

如果是這樣的話,我會完全失去如何用用戶生成的內容做到這一點。

+0

有許多用戶定義模板的解決方案。考慮[Shopify的液體](https://github.com/Shopify/liquid)。 – meagar

回答

4

允許用戶執行ruby代碼可能會非常危險。我會創建一組映射。例如:

  • [food.name]將由@food.name
  • [food.price]更換將 通過@food.price

被取代,我會明確地使用gsub通過@food.name更換的[food.name]所有出現。總而言之,我認爲最安全的做法是將您的用戶使用的替換模式列入白名單,並將其全部納入。

+0

這似乎是一個更好的解決方案。謝謝! – Mhoad