前提・実現したいこと
ある施設の検索サイトを作っています。
施設詳細ページで「お気に入り登録をする」「お気に入りを外す」をAjaxを使って動かしたいと思いました。
参考にした情報
https://qiita.com/naberina/items/c6b5c8d7756cb882fb20
発生している問題・エラーメッセージ
Ajaxを実装しているつもりなのですが、、
リロードしないと登録済み・登録削除済の状態を表示できないでおります。
該当のソースコード
リロードすると実行できているので、
おそらくコントローラーやviewの問題出なく、jsの処理で何かが漏れているのだと思うのですが、
自分で原因を見つけられずにおります。原因の想定がつくかたがいらっしゃれば、アドバイスいただけないでしょうかm_ _m
<show.html.erb>
<table> <tbody> <tr> <th>施設名</th> <td><%= @nursery.title %></td> </tr> <tr> <th>住所</th> <td><%= @nursery.address %></td> </tr> </tbody> </table> <div id="like_button_<%= @nursery.id %>"> <%= render partial: "like", :locals => { nursery: @nursery }%> </div>
<_like.html.erb>
<% if user_signed_in? %> <% like = current_user.likes.find_by(nursery_id: nursery.id) %> <% if like.present? %> <%= link_to("/nurseries/#{nursery.id}/likes/#{like.id}", method: :delete, id: "like-button", remote: true) do %> <i class="fa fa-minus unlike-btn">お気に入りから外す</i><br> <% end %> <% else %> <%= link_to("/nurseries/#{nursery.id}/likes", method: :post, id: "like-button", remote: true) do %> <i class="fa fa-star like-btn">お気に入り登録</i><br> <% end %> <% end %> <% else %> <i class="fa fa-star like-btn">お気に入り登録</i><br> <% end %>
<nurseries_controller>
def show @nursery = Nursery.find(params[:id]) end
<likes_controller>
def create @like = Like.new(user_id:current_user.id, nursery_id:params[:nurseries_id]) @like.save end def destroy @like = Like.find_by(user_id:current_user.id ,nursery_id:params[:nurseries_id]) @like.destroy end
<create.js.erb>
$('#like_button_<%= @nursery.id %>').html("<%= j(render partial: 'like', locals: {nursery: @nursery}) %>");
<destroy.js.erb>
$('#like_button_<%= @nursery.id %>').html("<%= j(render partial: 'like', locals: {nursery: @nursery}) %>");
<application.js>
//= require underscore //= require gmaps/google //= require jquery //= require jquery_ujs //= require_tree .
補足情報
gem 'jquery-rails'
のbundle installは完了しています。
ajaxが動かなかったページで検証画面を開くとエラー内容が確認できましたので、
添付もいたします。自分では色々検索しても読み解けませんでした。。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。