1

我将 action_text 与模型一起使用,并且需要使用流动模板变量输入链接,例如:

Contact us at: <a href="mailto:support@{{website.domain_name}}">support@{{website.domain_name}}</a>

然而,action_text 通过对大括号进行编码来破坏这些链接 :( 它也在 src img tags src attributes 中做到这一点 :(

Contact us at <a href="mailto:support@%7B%7Bwebsite.domain_name%7D%7D">support@example.com</a>

如果我在 href 或 src 属性的任何地方使用我自己的标签,例如 [domain_name] ,它的作用也是一样的。

我只想让我的 HTML 保持原样,保持原样,就像我输入它一样,我不需要任何“帮助”编码 URL tfank 你非常喜欢 action_text/Rails。

有没有办法修复或禁用这种不需要的行为?

后期编辑:

原来这个 trix 东西也在删除任何其他 HTML,例如表格、div 等 :( 它甚至删除了 HTML 数据属性 :(( 我如何禁用它?我只想要一个具有基本功能的友好 HTML 编辑器(粗体,下划线、段落、标题...)

4

2 回答 2

0

我用CGI::unescape

在我的模型中,我有类似的东西:

class Post
   has_rich_text :content

   def decoded_content
      CGI::unescape(content.to_s)
   end
end

然后在帖子对象上使用它。IEPost.first.decoded_content


CGI::unescapeHTML或者CGI::unescape_html对我不起作用。

于 2020-08-26T11:19:00.490 回答
0

您可以使用CGI. 例如,如果您有一个Post带有 的模型has_rich_text :content,那么在您的show视图中,您可以这样做:

<%= (CGI.unescapeHTML @post.content.to_s).html_safe %>

Trix 使用 ActionText,它是自己的富文本,因此您首先将其转换为字符串to_s,然后使用 编码 HTML 内容CGI,最后使整个字符串html_safe显示在浏览器中。

更多上下文:无论您输入什么ActionTexttext_area,返回数据库中的所有内容都将存储为字符串。数据库不保存 HTML。因此,您只想将 HTML 保存为字符串,然后在视图中接收到它之后,您可以执行编码和其他操作以将其转换回 HTML。


你甚至可以使用HTML Entities或 Nokogiri(有点复杂)

于 2020-06-29T16:17:23.810 回答