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

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

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

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

Ruby

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

Q&A

解決済

1回答

662閲覧

helper内で画像を表示させる記述の仕方が分からない

punchan36

総合スコア105

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2020/12/04 07:23

前提・実現したいこと

ユーザーから「いいね」や「フォロー」などがあった際の通知機能を実装しています。
既に上手く機能しており、「user.nameがあなたをフォローしました」等の表示及びリンクの設定は既に完了しています。

ここからuser.nameの前にそのユーザーのプロフィール画像も表示させようと思ったのですが、上手くいきません。
カラム名はimage_nameなのですが、そのまま使用すると「1.jpg user.nameがあなたをフォローしました」の様に「画像名」が表示されてしまいます。

試したこと

「ruby 画像 表示」や「ruby ヘルパー内 画像 -image_tag」など色々調べてみましたが、railsimage_tagに関する内容等ばかりヒットしてしまい解決出来ませんでしたので質問させて頂いております。お力をお貸し頂けると有難いです。

notifications_helper.rb

Ruby

1module NotificationsHelper 2 def notification_form(notification) 3 @visitor = notification.visitor 4 5 case notification.action 6 when "follow" then 7 tag.a(notification.visitor.image_name, href:user_path(@visitor), style:"font-weight: bold;")+ 8 tag.a(notification.visitor.name, href:user_path(@visitor), style:"font-weight: bold;")+" followed you" 9 when "like" then 10 tag.a(notification.visitor.name, href:user_path(@visitor), style:"font-weight: bold;")+" liked your post"+tag.a(notification.post.post_image_name, href:post_path(notification.post_id), style:"font-weight: bold;") 11 end 12 end 13end

補足情報(FW/ツールのバージョンなど)

ruby 2.6.4p104
RubyGems 3.0.3
Rails 5.2.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

Helperのmethodが返す String がそのままhtmlになりますので、
view内で画像を表示させる methodを使えば良いのです。
ただし、文字列演算をすると <> などが escapeされることがあるので、必要に応じその対策を

投稿2020/12/08 00:54

winterboum

総合スコア23567

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

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

punchan36

2020/12/08 02:22

有難うございます。 であれば、やはり画像を表示させる処理はHelper内では難しく、view内でするしかなさそうでしょうか。 「いいね」や「フォロー」があった際にそれぞれ表示させたい画像も違います(表示させない場合分けもある)ので、となればHelper内で記述しているcase文も丸々view内にて記述し直した方が賢明でしょうか?
winterboum

2020/12/08 04:15

え?? Helperでそのmethod使えばよいだけですが??
punchan36

2020/12/08 06:15

すみません、勘違いしていました。 Helper内で記述したいのは以下の様な内容なのですが、<>等、通常erbで使用するコードが当然の事ながら上手く読み込まれません。 <%= link_to user_path(@user) do %> <img src="<%= "/user_images/#{notification.visitor.image_name}" %>"> <% end %> 「<」を「&lt;」に変換する内容等も調べましたが、上手く読み込まれずエラーになってしまいます。 rbファイル内でこのような記述をするのが初めてなのですが、どのような対策をすれば良いのでしょうか…。
punchan36

2020/12/12 07:41

有難うございます!下記のように記述する事で無事解決致しました。 image_tag("/user_images/#{notification.visitor.image_name}") 「image_tag」で調べるとerbファイルでの記述に関する情報が多く、rbファイルでどのように書けば良いのか中々分からなかったのですが、案外シンプルなものでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問