0

ページを更新せずに 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
4

1 に答える 1

1

html(htmlString)選択した要素のコンテンツを設定します。選択した要素はボタンです。replaceWith(newContent)代わりに使用してください。

于 2013-01-17T02:17:27.690 に答える