ページを更新せずに ajax を使用して「いいね」ボタンを切り替えます。ボタンをクリックすると、何らかの理由で、ボタンの背景に大きなボタンのレイヤーがあるように見えます。なぜ重ね着しているのか、なぜ大きいサイズになるのかわかりません。
問題は、私が使用しているブートストラップ クラスにあります。これにより、btn よりも btn が呼び出されます。クラスを削除すると、リンクが適切に再レンダリングされます。したがって、CSS で link_to のスタイルを変更して btn のように見せようとしましたが、同じ問題が発生しました。
ボタンの通常の外観は次のとおりです。
クリックされた後:
マイクロポスト/ヘルパー:
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_#{micropost.id}", :remote => true
else
link_to "Into it!", like_micropost_path(micropost), :class => "btn btn-mini btn-primary", :id =>"vote_form_#{micropost.id}", :remote => true
end
end
マイクロポスト/like.js.erb:
$("#vote_form_<%=@micropost.id%>").html("<%= escape_javascript(toggle_like_button(@micropost, @current_user)) %>")
$("#unvote_form_<%=@micropost.id%>").html("<%= escape_javascript(toggle_like_button(@micropost, @current_user)) %>")
マイクロポスト コントローラー:
def like
@micropost = Micropost.find(params[:id])
@feed_item = Micropost.find(params[:id])
if @micropost.user_id != @current_user.id
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