0

クリックするとフォロー解除に変わるフォローボタンが欲しいです。しかし、フォームを送信すると、まったく何もしません。なんで?

私のコードはこれらのようなものです

-----アクション(users_controller.rb)-----

 def set_follow
   friend = User.find_by_username(params[:username])
   if f = Friendship.find(:first, :conditions => { :user_id => current_user.id, :friend_id => friend.id})

     f.destroy
     flash[:notice] = "Now added to follow list"
     respond_to do |format|
       format.html { redirect_to set_follow }
       format.js
     end
     #redirect_to :back
   else
     Friendship.create(:user_id => current_user.id, :friend_id => friend.id)
     flash[:error] = "Now deleted from follow list"
     respond_to do |format|
       format.html { redirect_to set_follow }
       format.js
     end
     #redirect_to :back
   end
end

-----フォーム(users/index.html.erb)-----

<div id="follow_status">
   <% if user_signed_in? && current_user.friends.find_by_id(user.id) %>
     <%= link_to sanitize('<i class="icon-remove icon-white"></i> ') + 'Un-Follow', follow_user_path(user.username), :class => 'btn', remote: true %>
   <% elsif current_user != user %>
     <%= link_to sanitize('<i class="icon-ok icon-white"></i> ') + 'Follow', follow_user_path(user.username), :class => 'btn btn-primary', remote: true %>
   <% end %>
 </div>

-----JSビュー(set_follow.js.erb)-----

$("#follow_status").html("<%= escape_javascript(render f) %>");
4

1 に答える 1

1

少し異なる方法ですが、JQueryでこれを行うだけです

$('.btn').click( function() {
    if( $('.btn').html() == 'Follow') {
        $('.btn').html('Unfollow');
    }
    else if( $('.btn').html() == 'Unfollow') {
        $('.btn').html('Follow');
    }

});

これはほんの一例です。おそらく、jquery でより具体的なクラスのチェーンを使用したいと思うでしょう。

于 2012-12-05T18:01:10.350 に答える