ruby-on-rails - 用户生成内容中的变量插值

标签 ruby-on-rails ruby

例如,我正在为一家餐厅构建自己的 CMS,我有一个页面,网站所有者可以进入该页面并为通过后端管理的每餐编写他自己的描述。

我们还假设每顿饭都有与之关联的名称和价格。

我怎么能让所有者继续输入类似的内容:

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

我能不能稍微扩展一下并引入内容 block 的概念(类似于 Wordpress 中的短代码),它们也可以放入类似 <%= show_reviews %> 的内容中?也进入他们自己的内容?

如果是这样的话,我完全不知道如何处理用户生成的内容。

最佳答案

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

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

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

关于ruby-on-rails - 用户生成内容中的变量插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42205104/

相关文章:

ruby-on-rails - 如何获得超过 20 个帖子的 Instagram API (Rails)

ruby - 在 Ruby 中切换字符串中的每一对字符

ruby-on-rails - Rails 在上传时使用 stremio-ffmpeg gem 给电影加水印

ruby-on-rails - Rails - 不稳定的超时错误可能与 Assets 编译有关

ruby-on-rails - 删除重复的哈希值并根据值设置值

ruby - 存储桶级别的 Amazon S3 安全 URL

ruby - Rubinius 和 JRuby 怎么可能这么慢?

ruby-on-rails - 将 Controller Action 作为 JS 而不是 HTML 处理

mysql - Rails 中的 after_create 使用手动 SQL 查询

ruby-on-rails - devise/cancan模拟帐户