質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Markdown

Markdownは、文書の構造、修飾情報を記述するための軽量マークアップ言語です。

Q&A

解決済

1回答

2259閲覧

gem ‘redcarpet’導入でundefined method `markdown' for #が解決できない。

HSRRRJSJQP

総合スコア24

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Markdown

Markdownは、文書の構造、修飾情報を記述するための軽量マークアップ言語です。

1グッド

0クリップ

投稿2020/04/24 07:51

初めに

初学者でアウトプットのため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: "本当に削除しますか?" }
退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

調べた内容を基にmarkdown_helper.rbの書き換え

test/helper以下に置いていては、テストの際にしか読み込まれません。app/helpers以下に置いてください(設定によっては、コントローラーでinclude MarkdownHelperが必要かもしれません)。

投稿2020/04/24 08:15

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HSRRRJSJQP

2020/04/24 08:45 編集

maisumakun様 早急な回答ありがとうございます。 ヘルパーメソッドを作る場所を間違えており、 全く気付いておりませんでした。 以後気をつけます。 なおコントールへの記載は入りませんでしたが、 追記する場合は該当viewのコントローラーに class xxxController < ApplicationController include MarkdownHelper と記載するということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問