如何在Rails中显示link_to助手生成的HTML纯字符串
解决方案
要把link_to生成的HTML以纯字符串形式输出(让浏览器显示原始的HTML标签文本,而非渲染成可点击的链接),你可以用Rails提供的h(别名html_escape)方法处理link_to的返回值:
示例代码
原代码(会渲染成可点击的链接):
<%= link_to pdf.title, pdf.file.url(:original, false), target: :_blank %>
修改后的代码(输出纯HTML字符串):
<%= h link_to pdf.title, pdf.file.url(:original, false), target: :_blank %>
为什么这样有效?
link_to助手默认返回ActiveSupport::SafeBuffer类型的对象——Rails会把它标记为「安全的HTML」,直接渲染内容而不转义特殊字符。而你之前用的debug方法,会自动把内容包裹在格式化的<pre>标签里,所以才会出现灰色框。
h方法的作用是对字符串做HTML转义:它会把<、>、"这类特殊字符转换成对应的HTML实体(比如<、>),这样浏览器就会把这些标签当成普通文本展示,而不是解析成HTML元素。
最终效果
修改后页面会直接显示原始的HTML字符串:
<a target="_blank" href="/system/pdfs/files/000/000/005/original/cv.pdf">my pdf file!</a>
内容的提问来源于stack exchange,提问作者Metaphysiker
相关产品推荐
相关产品推荐

