【问题标题】:Rails 6: ActionText breaks my links, how to disable URL encoding?Rails 6:ActionText 破坏了我的链接,如何禁用 URL 编码?
【发布时间】:2020-10-19 16:45:55
【问题描述】:

我在模型中使用 action_text,需要使用流动模板变量输入链接,例如:

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

但是 action_text 通过对大括号进行编码来破坏这些链接 :( 它也在 src img 标签 src 属性中这样做 :(

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 编辑器(粗体、下划线、段落、标题...)

【问题讨论】:

    标签: ruby-on-rails actiontext


    【解决方案1】:

    我用CGI::unescape

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

    class Post
       has_rich_text :content
    
       def decoded_content
          CGI::unescape(content.to_s)
       end
    end
    

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


    CGI::unescapeHTMLCGI::unescape_html 对我不起作用。

    【讨论】:

      【解决方案2】:

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

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

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

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


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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 2017-09-15
        • 2014-01-24
        • 2017-09-30
        相关资源
        最近更新 更多