###前提・実現したいこと
実現したいこと
Rails × Ajaxでいいねボタン機能をつくっています。具体的には
Viewにはユーザーのpost一覧(そのpost1つ1つにいいねぼたんがついている)
いいねボタンを押したらcontrollerで処理をした後にjs.erbファイルでいいねボタンをいいねする前と違う画像に変換する。
この時にいいねボタンを押したpostに対して画像の変換を行いたいので、いいねボタンを押した時にそのpostに紐付いているid(params[id])をjs.erbファイルに送ってそのidを使って画像を変換させたいです。
しかし、params[id]をどうjs.erbファイルに送ればいいのかわかりません。
(最後のそこ以外はcontrollerもviewも特に問題なく動いています。)
前提
使っているモデルは3つです。
User
Ruby
1class User < ActiveRecord::Base 2 has_many :creators 3 has_many :likes
Creator(post)
ruby
1class Creator < ActiveRecord::Base 2 belongs_to :user 3 has_many :likes, dependent: :destroy
Like(各postのいいね)
ruby
1class Like < ActiveRecord::Base 2 belongs_to :creator, counter_cache: :likes_count 3 belongs_to :user
###該当のソースコード
app/views/creators/index.html.erb
Rails
1<%= render 'creators/creator' %> 2
app/views/creators/_creator
Rails
1<% @creators.each {|v| %> 2 3<div class="row"> 4 <div class="col-md-7"> 5 <% if v.imagevalue %> 6 <a href="#"> 7 <%= image_tag v.image.thumb.url, :class => "img-responsive" %> 8 </a> 9 <% else %> 10 <a href="#"> 11 <%= image_tag("nowprinting400.gif", :size => '250x300') %> 12 </a> 13 <% end %> 14 </div> 15 <div class="col-md-5"> 16 <h3><%= v.name %></h3> 17 <p><%= v.description %></p> 18 <div class="row"> 19 <div class="col-md-8"> 20 <% v.tag_list.each do |tag| %> 21 <span class="label label-primary"><%= tag %></span> 22 <% end %> 23 </div> 24 25#ここから 26 27 <div class="col-md-4"> 28 <% if v.like_user(current_user.id) %> 29 <%= image_tag("new_like2.png") %> 30 <%= v.likes_count %> 31 <% else %> 32 <%= button_to creator_likes_path(v.id), id: v.id, remote: true do %> 33 <%= image_tag("new_like.jpg") %> 34 <span> 35 <%= v.likes_count %> 36 </span> 37 <% end %> 38 <% end %> 39 </div> 40 41#ここまでがいいねボタンです 42 43 </div> 44 <%= button_to v.name, creator_path(v.id), method: :get, class: "btn btn-primary"%> 45 </div> 46</div> 47<hr> 48<% } %> 49
app/controllers/likes_controller.rb
Rails
1class LikesController < ApplicationController 2 3 def index 4 @creators = Creator.all 5 end 6 7#いいねボタンを押したらこっちに渡ります 8 def create 9 @like = Like.create(user_id: current_user.id, creator_id: params[:creator_id]) 10 @likes = Like.where(creator_id: params[:creator_id]) 11 @creators = Creator.all 12 @id = params[:creator_id] 13 end 14end 15
app/views/likes/create.js.erb
javascript
1#ここで@idにparams[:id]が渡ってきてほしい! 2id = @id; 3$("#"+id).html("<%= j(render partial: 'like', locals: { creator: @creators, likes: @likes, like: @like}) %>"); 4
###試したこと
以上のようにjs.erbファイルに値が渡るように試みましたができませんでした。js.erbファイルにparams[:id]を渡す方法、ご存知でしたらご教授お願いいたします。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/03 12:25