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

我有

@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,文字正确吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验5

一、 1 #ifndef MACHINEPETS_H2 #define MACHINEPETS_H3 #include<iostream>4 #include<string>5 using namespace std;6 class MachinePets7 {8 public:9 MachinePets(const string s) :nickname(s) {} 10 virtual string talk()0; 11 string getnick…

DZ NT!架构

http://www.cnblogs.com/aaa6818162/archive/2009/05/24/1488236.html转载于:https://www.cnblogs.com/chenbg2001/archive/2009/11/11/1601230.html

iec104点号_QTouch之IEC60870-104通讯

QTouch之IEC60870-104通讯作者&#xff1a;舜通智能 来源&#xff1a;www.sitcsys.com 发布时间&#xff1a;2020-04-06热度&#xff1a;0一、协议简介IEC60870-104规约是一个广泛应用于电力、城市轨道交通等行业的国际标准&#xff0c;由国际电工委员会制定。IEC104规约把IEC1…

计算机网络ieee,博士生程珂论文连续两年被计算机网络顶级会议IEEE INFOCOM录用...

近日&#xff0c;第39届IEEE国际计算机通信会议(IEEE International Conference on Computer Communications, IEEE INFOCOM 2020)录用结果揭晓&#xff0c;陕西省网络与系统安全重点实验室沈玉龙教授课题组博士生程珂的论文《A Lightweight Auction Framework for Spectrum Al…

SQLite数据库如何存储和读取二进制数据

1. 存储二进制数据SQLite提供的绑定二进制参数接口函数为:int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));我们希望使用的是一套经过封装的COM接口&#xff0c;将上面这个函数封装为COM接口的形式BindParaByIndex( LONG index, VARIANT…

[html] 你有使用过summary标签吗?说说它的用途

[html] 你有使用过summary标签吗&#xff1f;说说它的用途 没有用过这个标题&#xff0c;认真地查阅了一下。 发现summary标签和details标签是配套使用的&#xff0c;而且仅有Chrome和Safari 6浏览器支持。 summary标签是作为details标签里的标题&#xff0c;details标签用于描…

Git 仓库 清理 瘦身

第一步&#xff0c;找出大文件或误添加的文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk {print $1})" 第二步&#xff0c;从仓库中删除文件或文件夹 删文件&#xff0c;将 bigfile 换成上…

去除标题_资深运营导师-云中教你轻松写标题

一、标题作用解读标题对于产品的意义买家购买逻辑想到一款产品&#xff0c;并知道他的名称去网上搜索&#xff0c;看到图片等信息类比价格评价等内容&#xff0c;下单收到货和自己根据标题照片评判商品核心要点&#xff1a;买家是根据产品名字作为购买切入点&#xff1b;照片和…

电大计算机网考选择题多少分,2016年度电大计算机网考选择题及标准答案.doc

2016年度电大计算机网考选择题及标准答案^计算机网考选择题及答案1.微型计算机的性能指标不包括______。DA.字长 B.存取周期 C.主频 D.硬盘容量2.计算机硬件系统的主要组成部件有五大部分&#xff0c;下列各项中不属于五大部分的是______。BA.运算器 B.软件 C.I/O设备 D.控制器…

Oracle OCM 认证指南

OCM考试全称为Oracle Certified Master(Oracle认证大师)&#xff0c;是在OCA(Oracle认证专员Oracle Certified Associate)、OCP(Oracle认证专家Oracle Certified Professional)之后更高一级的Oracle技术认证&#xff0c;也是Oracle技术认证最高的一个级别。 考试是两天的时间&a…

李宏毅机器学习课程---2、Regression - Case Study

李宏毅机器学习课程---2、Regression - Case Study 一、总结 一句话总结&#xff1a; 分类讨论可能是比较好的找最佳函数的方法&#xff1a;如果 有这样的因素存在的话 模型不够好&#xff0c;可能是因素没有找全 因素以及函数的复杂度&#xff0c;并不是越高越好&#xff0c;适…

[html] 如何动态修改`<title>`的标题名称?

[html] 如何动态修改<title>的标题名称&#xff1f; 1、原生&#xff1a;document.getElementsByTagName("title")[0].innerText your title document.title your title 2、jquery: $(title).html(your title) $(title).text(your title)个人简介 我是歌谣…

报名学校计算机考试在哪里报,全国计算机等级考试报名流程

全国计算机等级考试报名流程全国计算机等级考试采用全国统一命题&#xff0c;统一考试的形式&#xff0c;各科目均为上机操作考试。1&#xff0e;上网填报基本信息考生可任意选择地点并在规定时间内上网填报、修改及查询本人信息。填报过程分为登录、查看提示信息、输入并提交报…

卸载一直在创建还原点_如何创建系统还原点以及如何恢复?

如何创建系统还原点1、在搜索框中输入“创建还原点”并打开。2、在“系统保护”选项卡中点击“创建”。3、为此次还原点添加备注描述&#xff0c;此处命名为测试&#xff0c;点击创建即可。恢复系统至上一个还原点1、在刚才的“系统保护”界面中点击“系统还原”。2、在弹出的系…

UNICODE字符集

Unicode &#xff1a;宽字节字符集1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数&#xff1f;可以调用Microsoft Visual C的运行期库包含函数_mbslen来操作多字节&#xff08;既包括单字节也包括双字节&#xff09;字符串。调用strlen函数&#xff0c;无…

学生党的Surface Pro 5乞丐版使用体验

因为已经装了台式机&#xff0c;大一开学时买的厚重且续航差的华硕游戏本&#xff08;i5GTX950M8G)对我这个考研党已经显得不合适了。恰巧有一同学笔记本坏了&#xff0c;我便将游戏本低价出了&#xff0c;然后用两三倍的价格&#xff0c;入手了surface pro5 (new surface)的最…

2018计算机河北省高考试题,2018年河北高考物理压轴试题【含答案】

2018年河北高考物理压轴试题【含答案】18&#xff0e;如图4所示&#xff0c;由粗细均匀的电阻丝制成的边长为L的正方形金属框向右匀速运动&#xff0c;穿过方向垂直金属框平面向里的有界匀强磁场&#xff0c;磁场宽度d2L。从ab边刚进入磁场到金属框全部穿出磁场的过程中&#x…

[html] 为什么说cookie不可以滥用?

[html] 为什么说cookie不可以滥用&#xff1f; 1.安全问题 2.每次请求都会携带cookie,占内存&#xff0c;影响带宽 3.不能跨域 4.可储存的内容少个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

富士通01018z平板电脑评测_档案扫描好帮手,富士通ix1500无线双面高速扫描仪评测...

扫描仪是办公中常用的一种设备&#xff0c;尤其是建立了较为完备的档案管理制度的企业和组织&#xff0c;经常需要扫描和存档大量的文稿和图像&#xff0c;下文就介绍一台获得日本Good Design设计奖的无线高速扫描仪——富士通ScanSnap iX1500。打开包装可以看到ScanSnap iX150…

鼠标搭上显示背景色

原来帮一小朋友写的简单的应用&#xff0c;没有什么技术含量&#xff0c;只是做一学习过程的记录。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns&q…