Как я могу отобразить некоторые тексты с тегами в html - PullRequest
0 голосов
/ 29 апреля 2020

В эти дни я изучаю рельсы, и теперь я пытаюсь использовать редактор Wysiwyg для редактирования тела сообщения в блоге. Было приятно использовать его, но после сохранения текста и смайликов через Wyziwyg я получил текст с тегами, как показано ниже. Что я действительно хочу, так это показать все, что я написал в Wyswyg, включая смайлики в области, как показано ниже.

Нужно ли мне использовать редактор Wyswyg для отображения только этого тела сообщения? Как с отключенной функцией редактора? Если нет, то нужен ли для этого еще один вид драгоценных камней?

enter image description here Вот индекс. html .erb, как показано ниже

<div class="main">
    <section>
        <a href="<%= new_admin_post_path %>"><button class="create-button">Create New</button></a>
        <% if @posts.exists? %>
            <% @posts.each do |post| %>
                <article class="article-summary">
                    <h1 class="article-title"><%= post.title %></h1>
                    <div class="article-content"><%= truncate post.body, length: 200 %></div>
                    <p class="article-created-at"><%= post.created_at.to_time.strftime('%B %e at %l:%M %p') %></p>
                    <p class="article-command"><a href="<%= edit_admin_post_path(post) %>"><button>Edit</button></a> <%= link_to button_tag("Delete"), admin_post_path(post), method: :delete, data: { confirm: 'Are you sure?' } %></p>
                    <% if post.image.attached? %>
                        <%= image_tag post.image, class: "article-image" %>
                    <% else %>
                        <%= image_tag 'https://placekitten.com/1000/800', class: "article-image" %>
                    <% end %>
                </article>
            <% end %>
            <%= will_paginate @posts, class: "page"%>
        <% else %>
            <h2>There is no post</h2>
        <% end %>
    </section>
</div>

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете использовать html_safe или sanitize метод для текста из редактора WYSIWYG, если вы хотите отобразить как html страницу.

Использование html_safe может быть таким:

@str = "<b>Hi</b>".html_safe
<%= @str %>

И использование sanitize с использованием rails-html-sanitizer драгоценного камня может быть таким, как показано ниже:

full_sanitizer = Rails::Html::FullSanitizer.new
full_sanitizer.sanitize("<b>Bold</b> no more!  <a href='more.html'>See more here</a>...")

Согласно из документации обоих методов очевидно, что использование sanitize более надежно и рекомендуется:

Рекомендуется использовать sanitize вместо этого метода.

Простое решение с использованием html_safe:

<%= post.body.html_safe %>

Надежное решение с использованием sanitize: этот метод удаляет стиль фона, поскольку он содержит метод url. Итак, вам нужно определить пользовательское css дезинфицирующее средство.

...