初めに
初学者でアウトプットのためRrailsアプリを作成中です。
新たに作成したアプリでmarkdown記法を導入しようとするとエラーが発生。
対処いたしましたが解決できず質問させて頂きます。
実現したいこと
markdown記法を導入(markdown記法を用いて投稿できる)
(例) topic詳細ページで本文に掲載される文字がリンクになっている。
Markdown記法 チートシート
開発環境
- macOS Catalina(ver:10.15.3)
- localhost:3000
- ruby 2.6.3p62
- Rails 5.2.4.2
作業手順
- gem ‘redcarpet’導入(version指定なし)
- app/helpers/の配下にmarkdown_helper.rbを作成
- topics/show.html.hamlに
「%span %div=markdown(@topic.text)」を記載。
エラー内容
- 発生場所:topics/show.html.haml
- 指摘箇所:%div=markdown(@topic.text)
- ブラウザに表示された文章
NoMethodError in Topics#show undefined method `markdown' for #<#<Class:0x00007fcd0bf21388>:0x00007fcd0b6fafd8> Extracted source (around line #15): 13 %td=simple_format(@topic.text) 14 %span 15 %div=markdown(@topic.text) 16 17 - if user_signed_in? 18 .btn-box
- ターミナル
ActionView::Template::Error (undefined method `markdown' for #<#<Class:0x00007fcd0bf21388>:0x00007fcd0b6fafd8>): 12 %th 本文 13 %td=simple_format(@topic.text) 14 %span 15 %div=markdown(@topic.text) 16 17 - if user_signed_in? 18 .btn-box app/views/topics/show.html.haml:15:in `_app_views_topics_show_html_haml__2460972605116606340_70259318447120' Started POST "/__web_console/repl_sessions/084a5664894d712322fdcb7f89389d96/trace" for ::1 at 2020-04-24 16:08:53 +0900
やったこと
redcarpetの使い方を調べ直す(下記サイトなど・・・etc)
*Git Hub公式
*【Railsでマークダウン】Gem「redcarpet」を使ってRailsにMarkdownを実装
*[Rails] Markdown形式で入力できるようにしてみた(シンタックスハイライトも対応)
*RailsにMarkdown導入してプレビュー表示させるまで
- [[Rails]Markdown gem
Rails](https://qiita.com/___inon_/items/f93f6a8133b142a4c6d9)
調べた内容を基にmarkdown_helper.rbの書き換え
- markdownに@を付けるor付けないを試す
- unlessの条件分岐をなくす
- bundle installとrails sを再度行う
コード
[test/helper/markdown_helper.rb] module MarkdownHelper require "redcarpet" def markdown(text) unless @markdown options = { hard_wrap: true } extensions = { no_intra_emphasis: true, tables: true, fenced_code_blocks: true, autolink: true, quote: true } renderer = Redcarpet::Render::HTML.new(options) @markdown = Redcarpet::Markdown.new(renderer, extensions) end @markdown.render(text).html_safe end end
[views/topics/show.html.haml] .main__contents__topic .topic-text = link_to root_path do %h3 Topic詳細 .topic-table %table %tbody %tr %th タイトル %td= @topic.title %tr %th 本文 %td=simple_format(@topic.text) %span %div=markdown(@topic.text) - if user_signed_in? .btn-box .btn-box__edit = link_to '投稿の編集', edit_topic_path(@topic) .btn-box__delete = link_to '投稿の削除', topic_path(@topic),method: :delete, data: { confirm: "本当に削除しますか?" }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/24 08:45 編集