お気に入り機能を実装し、お気に入り(likeアクション)を押すと、ページの表示が画面遷移無しで変更できる仕組みを実装しました。
その実装部分は以下の様なものです。
Ruby
1 2#posts_controller.rb 3class PostsController < ApplicationController 4 def like 5 @post = Post.find(params[:id]) 6 if params[:type] == "up" 7 value = 1 8 @post.add_or_update_evaluation(:likes, value, current_applicant ) 9 render layout: nil, notice: 'お気に入りに追加しました' 10 else 11 @post.delete_evaluation(:likes,current_applicant) 12 render layout: nil, notice: 'お気に入りから外しました' 13 end 14 end 15end 16 17 18#view 19<% @posts.each do |post| %> 20 <div id="likeBox_<%= post.id %>"> 21 <%= post.reputation_for(:likes).to_i %>いいね<p><%= render 'like_btn', post: post %></p> 22 </div 23<% end %> 24 25 26#_like_btn.html.erb 27<% if current_applicant.liked?(post) %> 28 <%= link_to "お気に入りから外す",like_post_path(post, type: "down"),remote: true %> 29 <% else %> 30 <%= link_to "お気に入りに追加する", like_post_path(post, type: "up") ,remote: true %> 31<% end %> 32 33 34#like.js.erb 35 $('#likeBox_<%= @post.id %>').html("<%= @post.reputation_for(:likes).to_i %>いいね<p><%=j render 'posts/like_btn', post: @post %></p>"); 36 37
上記の記述で、上記のviewでの画面遷移なしでの表示変更は実装できました。
しかし、別ページで同様にlikeアクションについての画面遷移ナシでのajaxを実装の仕方がわかりません。
likeアクションでは、アクションがあるとlike.js.erbを呼び出しており、上記のviewに対応したjsファイルしか呼び出せていないようです。
他ページでもlikeアクションを同様に画面遷移なしで行いたいのですが、その場合のviewは上記のものとは変えたいのです。
・呼び出すjsファイルを切り替える
・そもそもjsファイルをもっとうまく記述して他のページでも使用できるようにする
といったアプローチがあるかとは思うのですが、どのようにすればいいのかがわかりません。
ご回答いただけますでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/06 16:06