前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)Ruby on railsでtwitterのようなシステムを作っています。
画像を表示させるための実装中に画像が表示出来なくなりました。
S3導入前は画像は表示されていました。
TOPページの画像表記の記述もエラーになっていたため、
改善し、TOPページは問題なく表示されるようになりました。
発生している問題・エラーメッセージ
画像を表示することが出来ない。
該当のソースコード
Ruby
1_show.html.erb 2<div class ="contents row"> 3 <%# <div class="content_post" style="background-image: url(<%= image_tag item.image ,class: 'item-image' if item.image.attached? %>);"> %> 4 <div class="content_post" style="background-image: url(<%= @item.image %>);"> 5 <% if user_signed_in? && current_user.id == @item.user_id %> 6 <div class="more"> 7 <span><%= image_tag 'arrow_top.png' %></span> 8 <ul class="more_list"> 9 <li> 10 <%= link_to '編集', edit_item_path(@item.id), method: :get %> 11 </li> 12 <li> 13 <%= link_to '削除', item_path(@item.id), method: :delete %> 14 </li> 15 </ul> 16 </div> 17 <% end %> 18 <p><%= @item.text %></p> 19 <span class="name"> 20 <a href="/users/<%= @item.user.id %>"> 21 <span>投稿者</span><%= @item.user.nickname %> 22 </a> 23 </span> 24 </div> 25</div>
試したこと
Ruby
1_item.html.erb 2 3<div class="content_post" style="background-image: url(<%= @item.image %>);"> 4➡︎コードを変更<div class="content_post" style="background-image: url(<%= url_for(item.image) %>) ;"> 5 6コードを変更しても表記は両方ともされなかったです。
補足情報(FW/ツールのバージョンなど)
Ruby
1_item.html.erb 2<div class="content_post" style="background-image: url(<%= url_for(item.image) %>) ;"> 3 <div class="more"> 4 <span><%= image_tag 'arrow_top.png'%></span> 5 <ul class="more_list"> 6 <li> 7 <%= link_to '詳細', item_path(item.id), method: :get%> 8 </li> 9 <% if user_signed_in? && current_user.id == item.user_id %> 10 <li> 11 <%= link_to '削除', item_path(item.id), method: :delete %> 12 </li> 13 <li> 14 <%= link_to '編集',edit_item_path(item.id), method: :get %> 15 </li> 16 <% end %> 17 </ul> 18 </div> 19 <p><%= item.text %></p> 20 <span class="name"> 21 <a href="/users/<%= item.user.id %>"> 22 <span>投稿者</span><%= item.user.nickname %> 23 </a> 24 </span> 25 </div> 26 27このコードでTOPページの画像は表示されていました。 28
補足情報追加11/18 12:03
S3はバケットを作成して、バケットポリシーを編集、 Gemfieにgem "aws-sdk-s3", require: falseをbundle installしました。 その後config/enviroments/delopment.rbにconfig.active_storage.service = :amazonにlocalから変更。 次に「パブリックアクセスをすべてブロック」のチェックを外す。 新規のパブリックバケットポリシー,任意のバケットポリシーにチェックを入れました。 config/storage.ymlに追記 amazon: service: S3 access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> region: ap-northeast-1 bucket: 自身のバケット名 環境設定 config/enviloment/developments.rb 最後の記述 # default_url_options[:host] = "localhost:3000" host = 'samplehost' Rails.application.routes.default_url_options[:host] = host #おそらく本番環境productionにも定義 ここを記載してlocalでは表示させることが出来ました。 url_forメソッドを使用して
あなたの回答
tips
プレビュー