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

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

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

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

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

800閲覧

imgタグで画像を表示したい

hakoco_12

総合スコア11

Ruby

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

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/09/21 02:47

#やりたいこと
Ruby on railsでWebサイトを作っています。
public/image_nameディレクトリに保存しているtop1.jpgを表示させたいです。

#現在のブラウザの表示
小さな画像のアイコンのみ表示されてしまっています。
イメージ説明

#現在のコード
html.erb

<img src="<%= "public/post_images/#{@post.image_name}" %>" >

posts.controller

def create params[:title] params[:content] @post = Post.new( title: params[:title], content: params[:content], image_name: "top1.jpg" ) end

テーブルのカラム一覧

sqlite

1sqlite> PRAGMA table_info(POSTS); 20|id|integer|1||1 31|title|varchar|0||0 42|content|text|0||0 53|created_at|datetime|1||0 64|updated_at|datetime|1||0 75|image_name|varchar|0||0 8sqlite> 9

わかる方がいらっしゃいましたら、何卒ご教示お願いいたします。
また、補足で必要な情報があればご指摘いただけると幸いです。

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

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

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

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

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

guest

回答1

0

Rails的に書くならば以下のようにImageTagってビューヘルパーを使うのが良いと思います。

erb

1<%= image_tag "/post_images/#{@post.image_name}" %> 2

Imgタグで書くならば、以下のようにすると正しく表示されるかもです。

erb

1<img src='<%= "/post_images/#{@post.image_name}" %>' >
  • publicを無くす
  • post_imagesの前にスラッシュ
  • srcの直後はシングルクオート、パス部分はダブルクオート

投稿2019/09/21 04:20

hatsu

総合スコア1809

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

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

hakoco_12

2019/09/21 14:58 編集

回答ありがとうございます。 image_tagを使ってみました! 現状は変化がないのですが、#{@post.image_name}の部分を画像のファイル名であるtop1.jpgに置き換えると正確に画像が表示されました。 なぜ#{@post.image_name}では表示されないのか、カラムなのかアクション内の定義なのか原因がわかりまセん。何か他に気になるところがあれば教えていただきたいです…。
hatsu

2019/09/21 15:04

@post.newしかしてないので、@postがちゃんと定義されてないのかもですね。 以下のように、PostをnewではなくCreateしてあげると@postが定義されます。 そうすると@post.image_nameがView側でちゃんと参照できるようになるかな、と。 ``` @post = Post.create( title: params[:title], content: params[:content], image_name: "top1.jpg" ) ```
hakoco_12

2019/09/22 04:39

回答ありがとうございます。 Post.createで書いてみましたが、やはり変わらなかったです、、、 試しに image_name = "top1.jpg" をcreateアクションから消してみたところ、ブラウザの表示が全く変わりませんでした。 やはりうまく定義ができていないのかもしれません。もう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問