2011-12-30 44 views
6

我在rails應用程序中使用gem acts_as_follower。我設置它並且它可以工作(在控制檯中),但是我對於如何在視圖中設置它毫無頭緒。 我想做一個按鈕對應於user.follow和user.stop_following方法。如何設置acts_as_follower

github沒有解釋這一點。請幫助。

+1

這與寶石無關,這是基本的Rails的東西。如果我是你,我會得到一本好的Rails書。書很好,它們是結構化的知識。 – 2011-12-30 19:52:13

回答

10

您可以創建您鏈接到的控制器操作。例如,在一個應用程序中,我將以下兩項操作添加到用戶控制器中。一旦路由也設置好了,我使用url幫助器鏈接到我的視圖中的動作,並最終通過javascript回調顯示flash消息。

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 

配置/ route.rb:

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

然後在您的視圖中可以使用url幫手鍊接到控制器動作:

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

在我看來,我有<%= button_to(「Un-Follow」,「unfollow」)%>然而,當我點擊生成的按鈕,我只是得到沒有路由匹配[POST]「/用戶/取消關注」 – Vasseurth 2011-12-30 21:48:30

+0

您添加了嗎?成員路由到您的route.rb文件,就像我在第二個代碼塊中顯示的那樣?您似乎沒有傳入任何用戶標識以取消關注。您應該可以將它用作<%= button_to「取消關注」,unfollow_user_path(@user)%> – JDutil 2012-01-04 23:19:04

+0

非常感謝您......不幸的是,button_to的作用方式與link_to不同。 – Vasseurth 2012-01-05 00:53:22