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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Q&A

解決済

1回答

943閲覧

Ruby on Railsでredcarpetを実装のためのヘルパーで NameErrorが発生する

ryuki_apple

総合スコア14

Ruby on Rails

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

0グッド

0クリップ

投稿2019/02/03 13:19

編集2019/02/04 10:23

Ruby on railsでredcarpetを使いマークダウン形式での記述を可能にしたい

gemのredcarpetを実装しようとした際に作成したヘルパーでNameErrorが発生してしまった。

発生している問題・エラーメッセージ

NameError in Posts#show  app/views/posts/show.html.erb where line #4 raised:  uninitialized constant MarkdownHelper::Redcarpet

該当のソースコード

ruby

1module MarkdownHelper 2 def markdown(text) 3 options = { 4 filter_html: true, 5 hard_wrap: true, 6 space_after_headers: true 7 } 8 9 extensions = { 10 autolink: true, 11 fenced_code_blocks: true, 12 lax_spacing: true, 13 no_intra_emphasis: true, 14 strikethrough: true, 15 superscript: true, 16 tables: true 17 } 18 renderer = Redcarpet::Render::HTML.new(options) 19 @markdown = Redcarpet::Markdown.new(renderer, extensions) 20 @markdown.render(text).html_safe 21 end 22end

このソースコードのしたから5行目の
renderer = Redcarpet::Render::HTML.new(options)
でNameError in Posts#showがおきています。

html

1<% @posts.each do |post| %> 2 <p> 3 <%= post.title %><br> 4 <%= markdown(post.content)%><br> 5 <%= image_tag post.image.to_s if post.image? %> 6 </p> 7<% end %>

これはshow.html.erbです。

ruby

1class PostsController < ApplicationController 2 def index 3 end 4 5 def show 6 @posts = Post.all 7 end 8 9 def create 10 @post = Post.new(content:params[:content],title:params[:title],image:params[:image]) 11 @post.save! 12 redirect_to('/posts/show') 13 end 14 15 private 16 def permit_params 17 params.require(:post).permit(:content, :title, :image) 18 end 19 20end

これはpostのコントローラーです。

補足情報

今回railsを用いてブログを作成しようと思っています。
データベースのカラムはcontent → text,title → string,image → string
です、よろしくお願いします
また、補足説明が必要でしたら言ってくれるとありがたいです。

NameErrorの解決方法

回答者様のおかげでNameErrorは解決しました。
やったこととしては
・gemファイルの確認 ←問題なし
・bundle installの再実行 ←問題なし
・サーバーの立て直し ←ここに問題あり

多分bundle install実行後にサーバーを再起動する必要があったのです。
回答者様ありがとうございます。
しかし、このソースコードだともう一つ問題が発生してしましました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Redcarpetの読み込みに失敗しているかもしれません。「Gemfilegem 'redcarpet'と書いたか」「bundle installを行ったか」「インストール後にサーバを再起動したか」を、まずは確認してみてください。

投稿2019/02/04 00:26

maisumakun

総合スコア145183

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

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

ryuki_apple

2019/02/04 10:17

ご回答ありがとうございます。 はっとなり、もう一度gemファイルの確認、bundle installの実行並びにサーバーをもう一度立て直しました。 そうしたところ、NmaeErrorは解決しました、ありがとうございます。 しかし、このようなエラーが発生しました、 TypeError in Posts#show wrong argument type nil (expected String) 投稿文のヘルパー、下から3行目において発生しています。 すみませんがもう一声ご回答をいただきたく思います。 よろしくおねがします。!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問