2011-12-30 16 views
6

Używam gem acts_as_follower w aplikacji rails. Ustawiłem go i działa (w konsoli), ale nie mam pojęcia, jak skonfigurować go w widoku. Chcę, aby przycisk odpowiadał metodom user.follow i user.stop_following.Jak ustawić acts_as_follower

Github tego nie wyjaśnia. Prosimy o pomoc.

+1

ten nie ma nic wspólnego z klejnotem, to podstawowe rzeczy Railsów. Gdybym był tobą, dostałbym dobrą książkę Railsów. Książki są dobre, mają uporządkowaną wiedzę. –

Odpowiedz

10

Można tworzyć akcje kontrolerów, do których prowadzi łącze. Na przykład w aplikacji mam do kontrolera użytkownika następujące dwie akcje. Po skonfigurowaniu tras korzystam również z pomocy do linkowania do akcji z mojego widoku i kończę na wyświetlaniu wiadomości flash za pośrednictwem wywołań zwrotnych javascript.

UsersController:

def follow 
    @user = User.find(params[:id]) 

    if current_user 
    if current_user == @user 
     flash[:error] = "You cannot follow yourself." 
    else 
     current_user.follow(@user) 
     RecommenderMailer.new_follower(@user).deliver if @user.notify_new_follower 
     flash[:notice] = "You are now following #{@user.monniker}." 
    end 
    else 
    flash[:error] = "You must <a href='/users/sign_in'>login</a> to follow #{@user.monniker}.".html_safe 
    end 
end 

def unfollow 
    @user = User.find(params[:id]) 

    if current_user 
    current_user.stop_following(@user) 
    flash[:notice] = "You are no longer following #{@user.monniker}." 
    else 
    flash[:error] = "You must <a href='/users/sign_in'>login</a> to unfollow #{@user.monniker}.".html_safe 
    end 
end 

config/route.rb:

resources :users do 
    member do 
    get :follow 
    get :unfollow 
    end 
end 

Następnie w widoku można użyć pomocnika url podłączenia się do działania kontrolera:

<%= link_to "Unfollow", unfollow_user_path(@user) %> 
+0

Moim zdaniem mam <% = button_to ("Un-Follow", "unfollow")%> jednak gdy kliknę na wygenerowany przycisk Właśnie dostaję Brak dopasowania trasy [POST] "/ users/przestań obserwować" – Vasseurth

+0

Czy dodałeś trasy członków do pliku route.rb, tak jak pokazałem w drugim bloku kodu? Wygląda na to, że nie przekazujesz żadnego identyfikatora użytkownika, aby anulować obserwację. Powinieneś być w stanie użyć go jako <% = button_to "Unfollow", unfollow_user_path (@user)%> – JDutil

+0

Dziękuję bardzo ... Niestety button_to nie działa tak samo jak link_to. – Vasseurth