(rails) 从 DB 中获取并渲染成 HTML

Posted

技术标签:

【中文标题】(rails) 从 DB 中获取并渲染成 HTML【英文标题】:(rails) taking from DB and rendering into HTML 【发布时间】:2010-10-22 10:25:48 【问题描述】:

我正在为我的 Web Dev 课程构建一个网站,但我一直在渲染 html。我希望能够使用一个简单的表单(我现在几乎只有这个控制器的脚手架,我尝试将 content_type 粘贴到我的控制器中,但没有进展。)提交文本并将其呈现为 HTML。这个想法是,因为这门课需要从书中复制一堆废话作为 HTML 的示例和参考,也许我可以像博客文章一样提供它们。 (都在同一个页面上,使用相同的布局。唯一改变的是博客列表和数据(有问题的控制器)列表下方的内容 div。

所以,简而言之,我的问题是:如何从数据库中获取文本以呈现 html 标签而不是显示为纯文本?

谢谢,如果需要补充信息,请告诉我。 卡梅伦

编辑:(添加代码。实际上几乎没有脚手架,但是,whatevs。) 另外,不确定代码 sn-p 工具应该如何工作。我希望它折叠起来。

 class DatapostsController < ApplicationController

before_filter :header

def header response.headers['Content-type'] = 'text/html; charset=utf-8' end

# GET /dataposts # GET /dataposts.xml def index @dataposts = Datapost.all @posts = Post.all

respond_to do |format|
  format.html # index.html.erb
  format.xml   render :xml => @dataposts 
end

end

# GET /dataposts/1 # GET /dataposts/1.xml def show @dataposts = Datapost.all @datapost = Datapost.find(params[:id]) @posts = Post.all

respond_to do |format|
  format.html # show.html.erb
  format.xml   render :xml => @datapost 
end

end end


这是要渲染的视图。它是从主页调用的 content_for 调用的部分。

<p>
  <small>Post title</small>
  <%=h @datapost.title %>
</p>
<hr />
<p>
  <%=h @datapost.body %>
</p>
<hr />
<hr />


<%= link_to 'Back', dataposts_path %>

我会继续推进我所拥有的一切。服务器以了解我想要的功能是什么样的。

http://www.sanarothe.com(编辑后约 5 分钟)

【问题讨论】:

为什么不发布您的代码 - 建议修复可能会容易得多。 您确实需要发布视图代码。只需将其粘贴到文本框中,选择它,然后点击文本框顶部看起来像二进制的按钮。不要添加 HTML 标签。 【参考方案1】:

您在此处调用的 h 方法:

<%=h @datapost.body %>

也称为html_escape - 这里是relevant link in the documentation。删除它,您的 HTML 标记应该会正确呈现。

您应该始终使用h 方法显示您从用户那里获得的代码,以防止跨站点脚本攻击。但是,如果它是您从书本(或其他任何东西)中抓取的代码,那应该没问题。

【讨论】:

啊哈!谢谢。总是很简单>.

以上是关于(rails) 从 DB 中获取并渲染成 HTML的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3 - 从视图中渲染 PDF 并附加到电子邮件

通过渲染 Rails 部分创建 jquery html 对象

Rails 设计多态 - 使用 Ajax 获取部分渲染

从数据库中获取并通过 db 列中的数组进行映射

js.erb 不在 Rails 6 中渲染

Rails 5.1 button_to helper生成查询字符串而不是隐藏表单