【问题标题】:Rails automatically escpaping HTML - how to stop it?Rails 自动转义 HTML - 如何阻止它?
【发布时间】:2011-05-13 19:44:28
【问题描述】:

我正在努力将旧的 Rails 应用程序 (1.1.6) 升级到 Rails 3。显然,发生了很多变化。一件事似乎是 Rails 自动转义掉到视图中的内容。但是,我有一个帮助器为我生成 IMG 标签的情况,Rails 会自动转义生成的内容。

<%= random_image('public/images/headers') %>

这会导致内容转义,就像我所做的那样(在 1.1.6 中)

<%= h random_image('public/images/headers') %>

有没有办法告诉它不要逃跑?

【问题讨论】:

  • 您应该真正养成阅读 RELEASENOTES 的习惯。 "h" 过去所做的现在是 Rails 3 的默认行为,你必须做一些事情才能避免自动转义。正如下面的人所说,只需 [command].html_safe 任何生成字符串的命令,或者将 then 放入 raw(...) 中。哦,阅读发行说明。总是。真的。 :)
  • @Mörre 老实说,我不确定要阅读哪个发行说明。不知道这是 Rails 2.x 功能还是 3.x 功能 - 有很多版本,每个版本都有很多细节。
  • @Mörre 一个有效的观点,我承认。我不得不承认,这有点令人生畏,并且希望快速解决一个简单的问题。考虑到我知道 1.1.6 -> 2.x 的更改在 3.x 中不再相关,我不期待解析这些注释。就学习而言,我可能会“从头开始”,并在第一时间拿起一本好的 Rails 3 书籍/教程。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:
<%= raw random_image('public/images/headers') %>

【讨论】:

  • 吐出JSON表单控制器查看imo的最佳解决方案。
【解决方案2】:
.html_safe

它可能需要在助手内部

【讨论】:

  • 在你的视图中使用 raw 方法和在你的助手中使用 .html_safe 是惯例,但无论哪种方式都有效。
  • 谢谢,我什至从未听说过 raw,在 railscasts 上获取 .html_safe 用于从 2 迁移到 3
【解决方案3】:

在 Rails 3 应用程序中有一些方法可以实现这一点

  1. html_safe
  2. 原始
  3. h

raw 和 h 只能在控制器和视图中使用,这些方法在 helpers 中定义。

html_safe 可以在 Rails 应用程序中的任何地方使用,例如,可以在模型、助手、控制器等中使用。

更多信息请阅读http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/

【讨论】:

  • 咳咳,“h”是“raw”的反义词,一如既往。只有 1. 和 2. 是问题的解决方案。
猜你喜欢
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多