
前提・教えてほしいこと
Ruby on Railsでオリジナルアプリを作成しています。
コメント機能を非同期通信で実装するためjavascriptを記述しているのですが、送信ボタンを押してもjavascript内でhtmlを正しく記述できていないため、画面に表示されない状態です。
送信ボタンを押した際にjavascriptのhtml部分がビューに表示されるよう改善点を教えていただきたいです。
該当するソースコード
comment_channel.js
import consumer from "./consumer" if(location.pathname.match(/\/posts\/\d/)){ consumer.subscriptions.create({ channel: "CommentChannel", post_id: location.pathname.match(/\d+/)[0] }, { connected() { // Called when the subscription is ready for use on the server }, disconnected() { // Called when the subscription has been terminated by the server }, received(data) { const html = ` <div class="comment"> <li class="comment_list"> <div class="follow-header"> <div class="user-image"> if (date.comment.user.image?){ <a class="comment_user" href="/users/user.id"><img src="data.comment.user.image.url"></a> }else{ <a class="comment_user" href="/users/user.id"><img src="/images/no-image.png"></a> } </div> <div class="follow-right"> <div class="user-nickname"> ${data.comment.user.nickname} </div> <div class="user-introduce"> ${data.comment.content} </div> </div> </div> </li> </div>` const comments = document.getElementById("comments") comments.insertAdjacentHTML('beforeend', html) const commentForm = document.getElementById("comment-form") commentForm.reset(); } }) }
show.html.erb
<div class="post__show__title"> コメント </div> <div class="post__comments"> <div id="comments"> <div class="h4"><コメント一覧></div> <ul class="comments_lists"> <% @post.comments.each do |comment| %> <div class="comment"> <li class="comment_list"> <div class="follow-header"> <div class="user-image"> <% if comment.user.image? %> <%= image_tag comment.user.image.url %> <% else %> <%= image_tag("/images/no-image.png") %> <% end %> </div> <div class="follow-right"> <div class="user-nickname"> <%= comment.user.nickname %> </div> <div class="user-introduce"> <%= comment.content %> </div> </div> </div> </li> </div> <% end %> </ul> </div> </div> <div class="comment-form"> <% if user_signed_in? %> <%= form_with model: [@post, @comment], id: "comment-form" do |f| %> <div class="field"> <%= f.text_field :content, id:"comment_content", class:"input-comment", placeholder:"コメントを入力してください"%> </div> <div class="actions"> <%= f.submit "送信する", class: :form__btn %> </div> <% end %> <% else %> <strong><p>※※※ コメントの投稿には新規登録/ログインが必要です ※※※</p></strong> <% end %> </div> </div>
分からない部分・間違えていると思われる部分
私が分からない。間違えていると思っている部分は<div class="user-image">
内の記述です。
- 恐らくhtmlの記述を指定しているのでif文は使えないと考えられる。しかし、使わない場合どのように記述していいか分からない。
- show.html.erb内の
<%= image_tag comment.user.image.url %>
で表示している画像はhtmlで表示するにはどのように記述すればいいか分からない。
私なりに調べたり、記述を改変してみたのですが、辿り着いたのが今の記述でここからどのように改変すればよいか分からず困っています。
ご教授いただけましたら幸いです。

まだ回答がついていません
会員登録して回答してみよう