###前提・実現したいこと
マッチングアプリのいいね機能を実装しましたが、下記の画像の通り、いいねがリロード後に反映されてしまいます。
###コード
■users/show.html.erb (該当箇所)
<div class="text-center" id="user-description"> <%= @user.nickname %> <% if user_signed_in? %> <div id= "follow_form"> <% if current_user.following?(@user) %> <div class="btn btn-default" id="liked">リクエスト済</div> <% else %> <%= render 'users/follow', {relationship: @relationship} %> <% end %> </div> <a href="<%= root_path %>" > トップページに戻る </a> <% end %> </div>
■users/_follow.html.erb
<%= form_with model: relationship, remote: true do |f| %> <div> <%= hidden_field_tag :following_id, @user.id %> </div> <%= f.submit "観戦リクエスト" ,class:"btn btn-primary" %> <% end %>
■users/create.js.erb
$("#follow_form").html(`<div class="btn btn-default" id="liked">リクエスト済</div>`)
■users_controller.rb
class UsersController < ApplicationController def index @search_params = user_search_params @users = User.search(@search_params) end def show @user = User.find(params[:id]) @relationship = Relationship.new end private def user_search_params params.fetch(:search, {}).permit(:sex_id, :likesports_id, :liketeam_id, :watching_date_from, :watching_date_to, :prefectures_id, :job_id,:marriage_id) end end
■relationship_controller.rb
class RelationshipsController < ApplicationController def create #current_user.active_relationships.create(create_params) @relationship = current_user.active_relationships.new(create_params) if @relationship.save @follower_user = current_user @following_user = User.find(params["following_id"]) @matching = @following_user.following?(current_user) respond_to do |format| format.json end else render :template => "users/show" end end def destroy relationship = Relationship.find(params[:id]) relationship.destroy redirect_to controller: 'users', action: 'index' end private def create_params params.permit(:following_id) end end
###試したこと
下記記事を参考にviewのid箇所をdivではなくspanで指定
Ruby on Railsお使いですよね?
質問タグにそれと、JavaScriptの質問タグも追加しておきましょう。
また、Rubyでのサーバーサイドだけでは、ボタンクリックなどの動作における表示更新はできないことは認識ありますでしょうか?
(JavaScriptによる表示更新が必要)