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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

10116閲覧

画像投稿サイトで一覧表示のところに画像を表示させたい(rails)

ayachika

総合スコア36

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2018/09/15 04:52

現在以下のような投稿サイトを作成しているものです。

イメージ説明

###画像投稿機能を付け、画像を投稿、表示させるようにしたい
carrierwaveを使って画像投稿機能を実装しました。そして、それを投稿一覧画面に表示させ、投稿詳細画面にも表示させるようにしたいです。

しかし一覧投稿のビューは、上記のとおりURLのようなものが表示されてしまいます。これを画像で表示させたいです。

index.html.erb

<% @posts.each do |post| %> <tr> 略 <td><%= post.picture %></td> 略 </tr> <% end %>

ちなみに詳細画面の表示は以下のとおりコードを描いたところ、うまく表示されています。

show.html.erb

略 <!-- 画像アップロード機能--> <p> <strong>Picture:</strong> <%= image_tag(@post.picture_url) if @post.picture.present? %> </p> 略

↓詳細画面↓

イメージ説明

###出るエラー
投稿する際画像も併せて表示させてたいのですが、このようにうまく表示されません。
イメージとしては、Twitterのような表示をさせたいです。

また、以下のように書き換えたりしましたが、エラーが出ます。

エラー
index.html.erb

<% @posts.each do |post| %> <tr> 略 <td><%= picture_tag post.picture.to_s %></td> <td><%= post.name %></td> 略 </tr> <% end %>

エラー表示

イメージ説明

以下は参考にしたサイト(同じように真似してみましたができませんでした)
Ruby on Rails: proper use of image_tag with carrierwave on a nested model
railsでcarrierwaveを使って画像をアップロード、表示

###参考
postとpicutureで投稿機能をつけました。カラムを作成したときの表示名です。
(初心者のため、うまく表現できずすみません。)

ご助言いただけると嬉しいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

前提

厳密さには欠く解説となりますので追加でご質問がある場合はコメントをお願いいたします。

結論

以下のindex.html.erbの4行目picture_tagとなっている部分を、image_tagに変更してみてください。
それで解決するはずです。書き方は、ご自身がshow.html.erbで書かれているimage_tag(@post.picture_url)を参考にしてみてください。

<% @posts.each do |post| %> <tr> 略 <td><%= picture_tag post.picture.to_s %></td> ← これを <td><%= image_tag post.picture.to_s %></td> ← このように変更 <td><%= post.name %></td> 略 </tr> <% end %>

何が問題だったのか

確認したところ、参考にされたサイトの該当箇所はimage_tagとなっていました。ayachikaさんは○○_tagの○○の部分を「自分が定義したカラムの名前に変更しなければいけない」と考えたのだと思いますが、その必要はありません。image_tagというのはRailsがあらかじめ用意してくれているメソッドの一つで、引数で画像のURLを渡せばその画像を表示してくれます。

どうすれば気づけたのか

エラー画面に、undefind method picture_tagとあります。これは、「picture_tagというメソッドは定義されていませんよ」というエラーです。そもそもpicture_tagというメソッドが存在しないので、エラーになってしまっていると判断できます。

これからどうするか

もう少しRailsの基本を復習してみると良いかもしれません。
image_tagで画像を表示させるというのはRailsの知識の中ではとても基本的なものです。そのエラーについて判断できなかったということは、他にも知識の抜け漏れがある可能性があります。以下にオススメの書籍などを掲載いたしますので、よろしければ参考にしてください。

1.実践Ruby-Rails-4-現場のプロから学ぶ本格Webプログラミング amazonリンク: https://www.amazon.co.jp/実践Ruby-Rails-4-現場のプロから学ぶ本格Webプログラミング-黒田/dp/4844335928/ref=sr_1_9?ie=UTF8&qid=1537063338&sr=8-9&keywords=Rails Railsのバージョンとしては一つ古い物になってしまいますが、 実際にアプリを作りながら学んでいくことができます。学べる内容も十分実用的なものとなっています。 2.rails チュートリアル https://railstutorial.jp こちらも、実際に手を動かしながらアプリケーションを作成していくことができる教材です。書籍ではなくホームページに全文掲載されているような形で、全て無料で取り組むことができます。

投稿2018/09/16 02:11

編集2018/09/16 02:15
eichann120

総合スコア27

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

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

ayachika

2018/09/16 10:41

返事が遅くなり、申し訳ありません。eichann120さんのご助言どおり修正したところ、機能しました!ありがとうございました。 おっしゃるとおり、基礎をしっかり理解している者ではなく、今回改めてメソッドなど基礎を確認すべきと認識しました。書籍の紹介などもご親切にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問