ActioncableとActivestrageで画像を表示したい
Actioncable で画像を表示しようとしたところ、文字は表示されるのですが
画像はundifindedと表示されてしまう状況です。
発生している問題・エラーメッセージ
(文字列) undifinded
該当のソースコード
javascript
1channel.js 2import consumer from "./consumer" 3 4consumer.subscriptions.create("ItemChannel", { 5 connected() { 6 // Called when the subscription is ready for use on the server 7 }, 8 9 disconnected() { 10 // Called when the subscription has been terminated by the server 11 }, 12 13 received(data) { 14 console.log(data) 15 const html = ` 16 <div class="d-flex flex-wrap"> 17 <div>${data.content.name}</div> 18 <div><%= image_tag ${data.content.image} %></div> 19 <div>${data.content.store}</div> 20 </div>`; 21 const messages = document.getElementById('items'); 22 const newMessage = document.getElementById('item_name'); 23 const newImage = document.getElementById('item_image'); 24 const newStore = document.getElementById('item_store') 25 messages.insertAdjacentHTML('afterbegin', html); 26 newMessage.value=''; 27 newImage.value=''; 28 newStore.value='' 29 } 30}); 31
ruby
1<div id='items'> 2 3 <div class="place-wrapper "> 4 <% @items.each do |item|%> 5 <div class="place-item"> 6 <%= link_to place_item_path(item.id)do%> 7 <div class="h4 text-dark"> 8 <%= item.name %> 9 </div> 10 <%= image_tag item.image.variant(resize:'250x250')%> 11 <% end %> 12 </div> 13 <% end %> 14 </div> 15</div>
ruby
1controller.rb 2 3 def create 4 @place = Place.find(params[:place_id]) 5 @item = Item.new(item_params) 6 ActionCable.server.broadcast 'item_channel', content: @item if @item.save 7 end 8 9 private 10 11 def item_params 12 params.permit(:name, :image, :place_id, :store).merge(user_id: current_user.id, place_id: params[:place_id]) 13 end
試したこと
channel.js で
<%= image_tag ${data.content.image} %>の部分を
<img src="${data.content.image}"%>
としましたが変化なしでした。
画面をリロードすることによって画像を表示することはできます。
よろしくお願いいたします。
おそらくですが、画像のURLを取り出すことができたら解決しますので
取り出し方をご教授いただけないでしょうか?
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー