新手问题 怎么禁用 Rails 视图中的 HTML 自动转换?表达的有点不好。。

xjz19901211 · 2013年03月09日 · 最后由 cantin 回复于 2013年03月12日 · 3324 次阅读

如果不用 html_safe 文本中的一此字符就会被 自动转换了

然而,我写的一个模板不是 html 的,不要转换啊,难道要我每句变成字符后再调用 html_safe?

不知道要怎么做了,求帮助。。。

怎么让我的一个 view 所有的字符不会被自动转换?


我要做的事就是渲染一段 bash 代码出来,然后 我 curl path > xx && source xx

@xjz19901211 整体 to_s 以后 加 html_safe 其实不推荐这样 LZ 可以贴代码出来看看情况是什么样的 描述的差点事啊 如果可以贴的话

@zj0713001 就是我想渲染一段 bash 代码,但代码中有些变量什么的,于是弄成 erb 的,然后 问题来了,代码 中的一些符号老是给我转换掉了。。

好像还是不行唉。。。

刚刚不知道怎么弄好了。。。

现在又出问题了。。

#2 楼 @xjz19901211 我也没有太好的办法 只能每个 "“后面.html_safe 周末大神们都不在...

郁闷,刚刚真的我看到源代码好了。。。

刚刚应该是用了 html_safe。。。不知道怎么解,只能写 html_safe 了。。

sanitize http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize

不要用 html_safe


update:上面是 html 的,bash 不熟,等楼下了

让你麻烦是有道理的

@Rei 看似对某一些标签的白名单,而不是对整个视图。。英文很烂,请见谅。

@doitian 我感觉那是对 html 的道理。。。我写的不是 html。。。

又或者说我不应该在 view 里做非 html 的事?

#9 楼 @xjz19901211 明白了,你是要输出 xxx.sh.erb。因为 erb 最广泛的用途就是 HTML 模板,而且在 Rails 里被设置成 <%= %> 默认 escape, 你可以用 <%== %> 来略过 escape

@xjz19901211 不是 html 干嘛不

# controller
respond_to do|format| 
  format.text
  format.html
end

# view
xxx.text.erb

然后访问 xxx.text 呢?

可控的话 <%= raw str %>

@doitian @wppurking @jasl 谢谢,我明天去试试


其实,我发问时是以前非<%= %>里的也会转换,后来发现居然是不转换,只是<% %>中的转换了,那么就算也简单些了

format.text 不会转么?我得试试。。。 我试过用

format.bash #自己加的格式。。

但还是转换了

#13 楼 @xjz19901211 不是转换了,是你用了默认的 content type HTML,浏览器当成 HTML 解析了,curl 下载下来是不会有问题的。当然最好是使用正确的 content type

需要 登录 后方可回复, 如果你还没有账号请 注册新账号