Rails slim 将 html 渲染为文本

Posted

技术标签:

【中文标题】Rails slim 将 html 渲染为文本【英文标题】:Rails slim rendering html as text 【发布时间】:2021-01-05 00:01:14 【问题描述】:

我正在使用 Rails 6 和 rails-slim

当我尝试使用以下代码呈现 rails 表单时:

== form_for model, url: messages_path, method: :post do |f|
  = f.text_field :body
  = f.submit

它将原始 html 输出为输入标记的字符串,即此 html 在浏览器中显示为字符串,而不是实际呈现输入/按钮:

<input type="text" name="message_thread_message[body]" id="message_thread_message_body" /><input type="submit" name="commit" value="Create Message" data-disable-with="Create Message" />

当我使用开发人员工具检查元素时,我可以看到表单的其余部分呈现为正确的 html 元素。

苗条的 gem 版本是:

苗条 (4.1.0) 超薄导轨 (3.2.0)

我是否错过了任何配置步骤?

【问题讨论】:

不应该是= form_for model(而不是==)吗? 感谢@SebastianPalma。我也试过了,但结果还是一样 您是在渲染局部吗?如果是这样,您使用的代码是什么? 【参考方案1】:

没有 HTML 转义的输出 == 与单个等号 = 相同,但不通过 escape_html 方法。参考this 以下应该工作

= form_for model, url: messages_path, method: :post do |f|
  = f.text_field :body
  = f.submit

【讨论】:

谢谢,我已经尝试过了,但不幸的是,它仍然在做同样的事情。复制您的 sn-p 并粘贴以确保我 100% 正确 渲染时你必须添加== for ex == render 'some_partial'

以上是关于Rails slim 将 html 渲染为文本的主要内容,如果未能解决你的问题,请参考以下文章

Rails/Slim_Dynamic 数据标签属性

将 Rails 实体渲染为文件

sh 将rails应用程序中的所有.erb文件转换为.slim

在 Slim 中使用 Ruby on Rails 有条件地创建隐藏属性

使用 rails 资产管道预编译超薄模板

Rails + slim:选择标签上的数据属性未呈现