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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

4780閲覧

rails if else文でelseに指定した画像が表示されない。

TakumaN

総合スコア120

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2016/03/29 00:19

編集2016/03/29 01:41

###no_work_image.pngが表示されない
work.work_image.urlの画像はちゃんと表示されるのですが、elseの時にno_work_image.pngの画像が表示されません。(スペルミスはありません。)

少し前には以下のコードでno_work_image.pngが表示されていたのですが、気がつくと表示されないようになっていました。

別のところで<%= image_tag "no_work_image.png %>とすると、ちゃんと表示されるので、if文の時だけ表示されないようです。

何が原因だと考えられるでしょうか?

rails

1#worksテーブルのwork_imageカラムに画像が格納されていて、それの有無により条件分岐させています。 2 3<% if work.work_image? %> 4 <%= image_tag work.work_image.url, class: 'img' %> 5<% else %> 6 <%= image_tag "no_work_image.png", class: 'img' %> 7<% end %>

###試したこと
以下のコードに書き換えてみましたが、ダメでした。

rails

1#条件式の?を外す 2 3<% if work.work_image %> 4 <%= image_tag work.work_image.url, class: 'img' %> 5<% else %> 6 <%= image_tag "no_work_image.png", class: 'img' %> 7<% end %>

rails

1#1行ずつに分ける 2 3<%= image_tag work.work_image, class: "img" if work.work_image? %> 4<%= image_tag "no_work_image.png", class: "img" %>

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

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

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

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

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

ayu

2016/03/29 01:34

気になったのですが、これって何ですか? ``` work.work_image? ``` 自分で作成したメソッドならば、どのような内容か伝えてくれないとわからないと思います。
TakumaN

2016/03/29 01:39

説明がわかりにくくてすいません。メソッドではありません。 worksテーブルのwork_imageカラムで画像が格納されていて、それの有無で条件分岐するようにしています。
ayu

2016/03/29 01:41

では、モデルの関係も載せた方がいいと思います。
guest

回答2

0

ベストアンサー

どのような処理をしたいのかをお書きいただくと、回答がしやすいです。

やりたい処理はwork配列の中のwork_imageがnilでない場合は画像を表示させて、それ以外をelseでno_work_image.pngを返すという処理で間違いないでしょうか?

でしたら以下で出来るかと思います。

ruby

1<% if work.work_image.nil? %> 2 <%= image_tag work.work_image, class: 'img' %> 3<% else %> 4 <%= image_tag "no_work_image.png", class: "img" %> 5<% end %>

投稿2016/03/29 01:51

kenny_sayama

総合スコア1036

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

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

TakumaN

2016/03/29 01:58

ありがとうございます!無事、表示されました!! ベストアンサーにさせていただきます! 本当に困っていたのでありがとうございました!!!
guest

0

worksテーブルのwork_imageカラムで画像が格納されていて、それの有無で条件分岐するようにしています。

こちらの条件ですが、

work.work_image?

というメソッドはないと思います。

やりたいのはこういうことではないですか?

work.work_image.exists?

投稿2016/03/29 01:44

ayu

総合スコア212

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

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

TakumaN

2016/03/29 01:54

試してみたところ、ページがWe're sorry, but something went wrong.というエラーになって表示されなくなりました。 ログを確認したところ、 F, [2016-03-29T10:49:45.742939 #1486] FATAL -- : ActionView::Template::Error (undefined method `exists?' for #<ImageUploader:0x007f984d5a7688>): となっていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問