いいね機能を非同期で実装しようとして記事を見ながらやってみたのですが、
リロードをしないと反映されない状態になっています。
song/show
ruby
1<!--投稿された歌 --> 2<%= image_tag @song.thumbnail.to_s, :size =>"500x300"%> 3<%= audio_tag(@song.voice) %> 4<%= @song.title %> 5<%= @song.description %> 6<!--いいね機能 --> 7<div id="like_buttons_<%= @song.id %>"> 8 <%= render 'likes/likes_form', song: @song %> 9</div> 10 11<!--投稿したユーザー--> 12<%= link_to user_path(@user) do %> 13<%= @user.name %> 14<% end %> 15<!--コメント欄--> 16<%= form_for @comment, url: comments_path do |f| %> 17<%= f.hidden_field :song_id, :value => @song.id %> 18<%= f.text_field :content %> 19<%= f.submit "送信" %> 20<% end %> 21<% @comments.each do |comment| %> 22 <%= comment.content %> 23 <% if current_user.my_comment?(comment) %> 24 <%= button_to "削除", comment_path(comment), method: :delete %> 25 <% end %> 26<% end %>
ikes/likes_form.html.erb
ruby
1% if current_user.already_liked?(song) %> 2 <%= link_to song_likes_path(song), method: :delete, style: "border-style: none;", remote: true do %> 3 <%= icon("fas", "heart") %> 4 <% end %> 5<% else %> 6 <%= link_to song_likes_path(song), method: :post, remote: true do %> 7 <%= icon("far", "heart") %> 8 <% end %> 9<% end %> 10<%= song.likes.count %>
likes/create.js.erb
ruby
1$('#likes_buttons_<%= @song.id %>').html("<%= j(render partial: 'likes/likes_form', locals: {song: @song}) %>");
likes/destroy.js.erb
ruby
1$('#likes_buttons_<%= @song.id %>').html("<%= j(render partial: 'likes/likes_form', song: @song)%>"); 2
l
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。