【问题标题】:formatted text not rendering and showing up as code in the view格式化文本未呈现并在视图中显示为代码
【发布时间】:2012-11-14 16:54:06
【问题描述】:

我正在为我的应用程序使用bootstrap-wysihtml5 gem,这是一个所见即所得的表单文本编辑器。 当我在文本区域中输入类似这样的内容时:

“这是一个测试,看看 bolditalic 是否有效”

我认为这是:

"this is a test to see if **bold** and *italic* are working"

任何 html 都显示为代码,而不是呈现为格式化文本。 似乎格式正在被编码,它只是没有正确呈现。 这可能是什么原因造成的?

我的代码如下,紧跟自述文件。

posts/_form.html.erb

<%= form_for @post, :html => { :multipart => true } do |f| %>

  <%= f.label :content %>
  <%= f.text_area :content, :class => 'wysihtml5' %>

  <%= f.label :photo %>
  <%= f.file_field :photo %>

  <script type="text/javascript">
    $('.wysihtml5').each(function(i, elem) {
      $(elem).wysihtml5();
    });
  </script>

  <div class="actions">
    <%= f.submit %>
  </div>

<% end %>

posts/_post.html.erb

<div class="photo"><%= image_tag post.photo.url %></div>
<div class="content"><%= post.content %></div>

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    posts/_post.html.erb

    中试试这个
    <div class="content"><%= post.content.try(:html_safe) %></div>
    

    【讨论】:

    【解决方案2】:

    尝试将其更改为&lt;div class="content"&gt;&lt;%= raw post.content %&gt;&lt;/div&gt;,看看是否有帮助。

    【讨论】:

    • 谢谢@Benjamin。我看到 .html_safe 也可以。有理由选择其中一个吗?
    • 实际上是的。正如@Santosh 指出的那样, html_safe 是一个更好的选择,因为使用 raw,您可能会受到脚本攻击。例如,我可以发布 ,它会在 raw 中执行,但不会在 html_safe 中执行。
    【解决方案3】:

    我用

    <%= post.content.html_safe %>
    

    【讨论】:

      【解决方案4】:
       <%= f.text_area :content,  escape: => false, :class => 'wysihtml5' %>
      

      【讨论】:

      • 感谢您的意见,但这似乎不起作用。 (至少不按照@Benjamin 和@Santosh 的建议更改视图文件。)
      猜你喜欢
      • 1970-01-01
      • 2014-01-31
      • 2021-06-20
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多