【问题标题】:Rails 4: how to insert line breaks in text_area?Rails 4:如何在 text_area 中插入换行符?
【发布时间】:2016-03-25 11:55:51
【问题描述】:

我在 Rails 中创建了一个博客。我是一个初学者并且已经走了很远,但现在我被一个看似次要的细节困住了:我似乎无法格式化帖子(文章)。

这是我的 show.html.erb 的相关部分:

<p>
  <strong>Content:</strong>
  <%= simple_format (@article.content) %>
</p>

当我写东西并插入 html-tags 时,它们不会被识别。我究竟做错了什么?

【问题讨论】:

    标签: ruby-on-rails posts


    【解决方案1】:

    Rails 会自动移除 html 标签以防止有人将代码注入您的网页(例如恶意 javascript)

    如果您的用户无法将数据输入@article.content 并且它始终是安全的,那么您可以使用 html_safe 方法将其标记为安全。

    <%= (simple_format (@article.content)).html_safe %>
    

    【讨论】:

    • 对我来说就像一个魅力,谢谢。但是,现在我似乎无法再更改字体大小了。只要我收起 simple_format 标签,我就可以再次调整字体大小。你知道为什么会这样吗?
    • 嗨,我认为这是因为simple_format 正在应用它自己的样式类。您可以尝试不使用它! &lt;%= @article.content.html_safe %&gt;
    【解决方案2】:

    可以发一下文章内容供参考吗?如果我不得不猜测,我会想象 Rails 正在转义 html 标签并将它们作为纯文本插入(所以输出看起来像:文章内容!

    查看 Rails 的辅助方法,例如 content_tag (http://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag) 和 concat (http://apidock.com/rails/ActionView/Helpers/TextHelper/concat),并考虑使用它们来帮助生成适当的 html 标记。

    需要关注的一个问题是谁将提供内容。例如,如果您正在编写一个其他人将使用的应用程序,您希望确保任何给您的 html is 被转义以避免 XSS 攻击。在这种情况下,您需要花一些时间阅读有关如何正确清理用户输入的信息。

    【讨论】:

      【解决方案3】:

      你现在可以像这样指定它被包裹的标签(默认为p):

        <%= simple_format (@article.content, {}, wrapper_tag: "div") %>
      

      添加white-space: pre-line 样式。

      它将在用户输入中显示\r或\n(回车)作为新行。

      更多信息: http://apidock.com/rails/v4.0.2/ActionView/Helpers/TextHelper/simple_format

      【讨论】:

        猜你喜欢
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 2014-12-24
        相关资源
        最近更新 更多