NoMethodError в обсуждениях # show - PullRequest
0 голосов
/ 28 октября 2019

Ниже приведен фрагмент кода из моего файла app/views/discussions/show.html.erb, где в строке 16 возникла эта ошибка:

undefined method `markdown' for #<#<Class:0x000000000c94e0d8>:0x000000000c94c6e8>
s<div class="columns">
  <div class="column is-8">
    <h1 class="title is-2 has-text-grey discussion-title"><%= @discussion.title %></h1>
    <h3 class="subtitle is-5 has-text-grey-lighter">by <%= @discussion.user.username %> in <%= link_to @discussion.channel.channel, @discussion.channel %></h3>
    <div class="level">
      <div class="level-left"></div>
      <div class="level-right">
        <% if  discussion_url(@discussion) %>
        <div class="buttons">
            <%= link_to 'Edit Discussion', edit_discussion_path(@discussion), class:'button'%>
            <%= link_to 'Delete', discussion_path(@discussion), method: :delete, data: { confirm: "Delete discussion?" }, class:'button' %>
        </div>
        <% end %>
      </div>
    </div>
    <div class="content"><%= markdown (@discussion.content) %></div>
    <!--                     ^^^^^^^^                            -->

    <h2 class="subtitle is-5 has-text-grey"><%= @discussion.replies.count %> Replies</h2>

    <div id="discussion-replies">
      <%= render @discussion.replies %>
    </div>

    <hr/>

    <h3 class="subtitle is-3 has-text-grey">Leave a reply</h3>
    <% if user_signed_in? %>
      <%= render 'replies/form' %>
    <% else %>
    <p>To reply you need to <%= link_to 'login', new_user_session_path %>. Don't have an account?
      <%= link_to 'Sign up', new_user_registration_path %> for one.</p>
    <% end %>

  </div>

    <%= render 'sidebar' %>

</div>

невозможно просмотреть раздел ответа или комментария

1 Ответ

1 голос
/ 28 октября 2019

Rails не включает markdown метод. Вам придется использовать драгоценный камень, написать что-то самостоятельно или их комбинацию. Например, вы можете использовать гем redcarpet или один из других гемов процессора разметки .

Затем напишите свой собственный помощник, используя этот гем.

# app/helpers/markdown_helper.rb
module MarkdownHelper
  MARKDOWN = Redcarpet::Markdown.new(Redcarpet::Render::HTML)

  def markdown(markdown_string)
    MARKDOWN.render(markdown_string).html_safe
  end
end

Для использования и возможных конфигураций рендеринга см. Документацию redcarpet .

С этим помощником вы можете просто сделать следующее в представлении:

<%= markdown(@discussion.content) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...