我有

@str ="Hi"

在我的erb视图中:

当我真正想要的是Hi时,页面上将显示:Hi。 将字符串"解释"为HTML标记的红宝石方法是什么?

编辑:这种情况

@str ="hello"

如果我认为

HTML源代码是>,其中我真正想要的是hello(不带转义双引号的反斜杠)。"取消转义"双引号的最佳方法是什么?

您可能还考虑使用%Q []语法进行字符串转义。 例如%Q["quotation marks"] =>""quotation marks""来源:en.wikibooks.org/wiki/Ruby_Programming/Syntax/不知道是否有帮助。

更新

出于安全原因,建议使用sanitize代替html_safe。链接

发生的事情是,作为一种安全措施,Rails正在为您转义您的字符串,因为其中可能嵌入了恶意代码。但是,如果您告诉Rails您的字符串是html_safe,它将直接通过它。

@str ="Hi".html_safe

要么

@str ="Hi"

使用raw可以很好地工作,但是要做的就是将字符串转换为字符串,然后调用html_safe。当我知道我有一个字符串时,我更喜欢直接调用html_safe,因为它跳过了不必要的步骤,使事情更清晰。有关字符串转义和XSS保护的详细信息,请参阅此Asciicast。

太棒了搜索一个小时后,我仍然找不到该怎么做。感谢您的回答。

我一直使用raw。很高兴知道这一点!

向未来致敬=)

根据stackoverflow.com/questions/44575106/删除了sanitize

使用原始:

但是,正如@ jmort253正确说的那样,请考虑HTML真正所属的位置。

嗨,此解决方案有效,除了一个警告:请参阅编辑后的问题

如果您使用的是使用Erubis的rails,最酷的方法是

请注意双等号。有关更多信息,请参见SO的相关问题。

您还可以使用simple_format(@str)删除恶意代码。在此处信息:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

您正在将业务逻辑与内容混合在一起。相反,我建议将数据发送到您的页面,然后使用JQuery之类的东西将数据放置在需要的地方。

这具有将所有HTML保留在其所属的HTML页面中的优势,因此您的Web设计人员可以稍后修改HTML,而无需倒入服务器端代码。

或者,如果您不想使用JavaScript,则可以尝试以下操作:

@str ="Hi"

至少以这种方式,您的HTML位于它所属的HTML页面中。

问题是,我的应用程序正在接收标记不良的文件,然后通过正则表达式将其"转换"为良好的HTML标记以发送到视图。因此,正在生成的HTML标记是动态的,因此我无法知道先验哪些标记应该包围@str。如果不在模型中,我将在哪里执行"翻译"工作?我认为我们不应在视图中包含大量的逻辑代码。

这确实是一个见解的问题。在开发新的应用程序时,我希望尽可能保持所有内容的清洁。但是,有时我们必须在别人给我们留下的束缚之内工作。如果您的数据源返回HTML标记,则可以按照Michael Stums解决方案中的描述使用"原始"格式。

如果您继承了某些代码的支持,并且代码中的区域显示出不良的思维或设计,那么清理它以使其更易于维护确实是您职责的一部分。当您开始编写出色的代码时,将其保留为您的感觉很好,但是在需要工作时,将其保留为比您发现的更好。我的工作之一是管理一些旧版应用程序;我热衷于不修复未损坏的东西,但由于其编写方式而无法轻松进行增强。我不得不重写大多数函数调用,但是现在使用它要容易得多。

如果没有其他理由使用JS,则不应将JavaScript用于HTML插值。对于非JS浏览器,这会破坏您的网站(是的,有一些)。

html也属于助手,有时也禁止在数据库中使用。虽然我宁愿存储markdown,然后渲染为html。

@Macario-嗨,我不确定我是否完全理解您的评论。你介意吗?谢谢!

好吧,有时候html是在模板的外部生成的,它需要一个辅助函数,不需要逃脱,或者有时候-尽管我认为这是一种不好的做法,而且不是很漂亮-它是由用户由WYSIWG编辑器生成并存储在数据库中的作为html,并且也不需要逃脱,当然,它需要进行清理,否则可能会发生不好的事情。我更喜欢使用模板语言Markdown来让用户输入样式化的内容。在这种情况下,您不希望您的内容被转义是这种方式。

当然,如果您允许非转义的内容,那么确保非邪恶的标记取决于您。

或者,您可以尝试CGI.unescapeHTML方法。

CGI.unescapeHTML"

This is a Paragraph.

=>"

This is a Paragraph.

html_safe版本在Rails 4中运作良好...

Administrators only ".html_safe if current_user.admin? %

>

@str ="hello"

If in my view I do

The HTML source code is hello where what I really want is hello (without the backslashes that were escaping the double >quotes). What's the best way to"unescape" those double quotes?

解决方案:在单引号内使用双引号(或在双引号内使用单引号),以避免使用反斜杠转义。

@str = 'hello'

由于您正在翻译,并且从一个人的s脚的编码文件中选择了想要的代码,您是否可以将content_tag与正则表达式结合使用?

您可以从api文档中窃取此翻译后的代码,插入到content_tag中,例如:

"#{translated_class}" do -%>

# => Hello world!

不知道您的代码,这种想法将确保您翻译的代码过于合规。

我假设已翻译的文本是div中的实际内容,对吗?即,在示例中,它是" Hello world!"?如果translation_text中包含更多HTML,即嵌套的div或spans,该怎么办?那时我需要多次调用content_tag吗?

和...抱歉,请早点输入...里面的每个嵌套div / span仍然是content_tag,尽管如此,您仍然需要对其进行验证?由于我们看不到您在用花哨的翻译;-)做些什么,因此Id假设您正在寻找所有标签,无论regex是否位于html的父级上……

。您不会把所有lis当作大屁股绳打印吗?每个人都有自己的content_tag:li,文字正确吗?

rails table html,Ruby on Rails:如何将字符串呈现为HTML?相关推荐

  1. netbeans下开发rails快捷键 及 Ruby On Rails开发技巧总结

    在controller和view直接跳转 - Ctrl + Shift + A 在controller/model和test/spec之间跳转 - Ctrl + Shift + T 直接跳转到类和方法 ...

  2. 关于 Ruby Ruby on Rails 的一些书及论坛网站

    关于 Ruby &Ruby on Rails 的一些书及论坛网站 需要用到的一些书 The Ruby Way   Programming Ruby 2nd edition Agile Web ...

  3. Ruby on Rails路径穿越与任意文件读取漏洞分析(CVE-2019-5418)

    Ruby on Rails是一个 Web 应用程序框架,是一个相对较新的 Web 应用程序框架,构建在 Ruby 语言之上.它被宣传为现有企业框架的一个替代,而它的目标,就是让 Web 开发方面的生活 ...

  4. ruby语言开源Web应用框架 Ruby on Rails 简介

    目录 Ruby on Rails是什么 历史 Rails 的 MVC 架构 Web 服务器支持 数据库支持 系统要求 集成开发环境 Ruby on Rails是什么 Ruby on Rails(官方简 ...

  5. [转载] Ruby、Rails、Agile的启示

    转自:http://vipnews.csdn.net/newscontent.aspx?pointid=2008_03_03_170600555 文/杨祥吉 本文作者以使用Ruby和Rails进行创业 ...

  6. [rails] 我的订餐系统 -- 小试ruby on rails(转)

    前言         近期在java社区中一种新的脚本语言ruby,及用ruby开发的一个wab框架 rails也热闹了起来.引起了不少的java开发人员的关注. 本人平时还是很少接触脚本语言方面东东 ...

  7. Ruby on Rails 和 J2EE:两者能否共存?

    Ruby on Rails 和 J2EE:两者能否共存? 两个 Web 应用程序框架的比较 文档选项 <tr valign="top"><td width=&qu ...

  8. 如何使用Docker轻松设置Ruby on Rails开发环境

    You've likely heard about Docker terms like containers, images, services, volumes, network, Dockerfi ...

  9. Ruby on Rails开发Web应用的基本概念

    Web应用架构 C/S架构 Web应用从最初就採用C/S架构.Server负责监听client请求,提供资源,Client向server发起请求并渲染页面. 两者通过TCP/IP协议栈之上的HTTP协 ...

最新文章

  1. LeetCode: 387. First Unique Character in a String
  2. 机器学习:基于Knn算法的用户属性判断方案设计
  3. MATLAB知识点2
  4. bzoj2705Longge的问题
  5. docker from指令的含义_Docker 镜像常用命令
  6. java多线程的同步控制_Java多线程并发控制工具信号量Semaphore,实现原理及案例...
  7. 例2.5 统计同成绩学生人数 - 九度教程第10题(Hash的应用)
  8. uni-app引入极光im
  9. 程序猿12个人艰不拆的真相
  10. git的使用、ssh生成、github、Git分支操作
  11. 教你标准音标发音的网站
  12. 最全的盲埋孔板工艺介绍与设计原则​​​​​​​
  13. IRC(Internet Relay Chat)(因特网中继聊天)协议——RFC1459文档要点总结
  14. python解越南逆天小学数学题
  15. 计算机软考网络工程师难度大吗,国家软考的网络工程师与CCNP相比,哪个难?...
  16. 反射内存网搭建参考文献
  17. jvm attach api
  18. [E进位制] lc168. Excel表列名称(进位制+进制转换)
  19. python如何录音_python实现录音功能
  20. 使用log4j的邮件功能

热门文章

  1. 前端学习(2975):路由传参的两种方式
  2. 前端学习(2963):跨域问题
  3. [vue-cli] vue-cli工程中常用的npm命令有哪些
  4. 工作37:账号绑定逻辑复杂
  5. 前端学习(1866)vue之电商管理系统电商系统之登录退出实现表单的数据验证
  6. 前端学习(1397):项目包含的知识点cookie和session2
  7. 第五十六期:IPv6只是增加了地址数量?其实真相并没有那么简单!
  8. 玩转oracle 11g(32):plsql版本低需到配置文件中添加配置
  9. Linux fprintf的用法
  10. java mac jconsole_解决java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包问题