railsのwebアプリでいいね機能を実装したいです。
ルーティングが間違っているのか、chromeでlocalhostで検証していいねのボタンをクリックしたところ、ビューには何も変化はなく、コンソールでは
色付きのハートクリック時(destroy)
POST http://localhost:3000/translations/103/likes/2 404 (Not Found)
色なしのハートクリック時(create)
POST http://localhost:3000/translations/104/likes 404 (Not Found)
となっており、ルーティングがうまく行ってないみたいなのですが、どこが悪いのかよく分かりません。
どなたか教えていただけませんか!!
コンソールでrake routesすると、
translation_likes POST /translations/:translation_id/likes(.:format) likes#create
translation_like DELETE /translations/:translation_id/likes/:id(.:format) likes#destroy
となってます。
likes controllerのdestroyのはじめにbinding.pryをつけても同じエラーなので、likes#destroy(またはcreate)にパスが通ってないみたいです、、
ブラウザの検証のコンソールで確認できるurlとrake routesでのurlは一致しているように見えるのですがなぜか通りません。
routes.rb
ruby
1 resources :translations do 2 resources :likes, only: [:create, :destroy] 3 end
show.html.erb
ruby
1<% @translations.each do |translation| %> 2... 3 <%= render "likes/like", translation:translation %> 4... 5<% end %>
likes/_like.html.erb
ruby
1<% if translation.like_user(@current_user.id) %> 2 <%= button_to translation_like_path(translation_id: translation.id), 3 method: :delete, id: "like-button", class: "btn-like", remote: true do %> 4 <%= image_tag('/icons/like-red.png') %> 5<% end %> 6 7<%= button_to translation_likes_path(translation_id: translation.id), id: "like-button", class: "btn-like", remote: true do %> 8 <%= image_tag('/icons/like.png') %> 9<% end %>
likes/destroy.js.erb
js
1$("#like-button").html("<%= j(render partial: 'like', locals: { translations: @translations, likes: @likes }) %>");
likes/create.js.erb
js
1$("#like-buttons").html("<%= j(render partial: 'like', locals: { translations: @translation, likes: @likes, like: @like}) %>")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/09 11:42
2018/04/09 12:28