問題は、ページ上のすべての「into it」ボタンが同じIDを持ち、すべての「undo」が同じIDを持っているため、1つをクリックすると他のボタンがオフセットされることです。また、ボタンは1回だけ切り替わります。私はrails、CSS、ajaxに非常に慣れていないので、助けてくれてありがとう。
Micropost_Helper.rb
def toggle_like_button(micropost, user)
if user.voted_for?(micropost)
link_to "undo", like_micropost_path(micropost), :class => "btn btn-mini btn-primary", :id =>"unvote_form", :remote => true
else
link_to "Into it!", like_micropost_path(micropost), :class => "btn btn-mini btn-primary", :id =>"vote_form", :remote => true
end
end
マイクロポストコントローラー
def like
@micropost = Micropost.find(params[:id])
if @micropost.user_id != @current_user
if @current_user.voted_for?(@micropost)
@current_user.unvote_for(@micropost)
respond_to do |format|
format.html { redirect_to :back }
format.js
end
else
@current_user.vote_for(@micropost)
respond_to do |format|
format.html { redirect_to :back }
format.js
end
end
end
end
VIEW / microposts / like.js.erb <-これを使用すると、ボタンを1回だけクリックできます。ここでも、ヘルプが必要です。
$("#vote_form").html("undo")
$("#unvote_form").html("Into it!")