2011-12-30 7 views
6

Estoy usando la gema acts_as_follower en una aplicación de rieles. Lo configuro y funciona (En consola), sin embargo no tengo ni idea de cómo configurarlo en una vista. Quiero hacer que un botón se corresponda con los métodos user.follow y user.stop_following.Cómo configurar acts_as_follower

El github no lo explica. Ayuda por favor.

+1

Este no tiene nada que ver con la gema, es algo básico de Rails. Si fuera tú, obtendría un buen libro de Rails. Los libros son buenos, son conocimientos estructurados. –

Respuesta

10

Puede crear acciones de controlador a las que se vincule. Por ejemplo, en una aplicación, tengo las siguientes dos acciones agregadas a un controlador de usuario. Una vez que las rutas también están configuradas, utilizo los helpers de URL para vincular las acciones desde mi vista, y termino mostrando los mensajes flash a través de devoluciones de llamada de 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 

A continuación, en su opinión, se puede utilizar el asistente de url para vincular a la acción del controlador:

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

En mi opinión, tengo <% = button_to ("Un-Follow", "unfollow")%>, sin embargo, cuando hago clic en el botón generado obtengo Sin ruta coincide [POST] "/ users/unfollow" – Vasseurth

+0

Agregaste ¿El miembro enruta su archivo route.rb como lo he mostrado en el segundo bloque de código? No pareces pasar realmente ninguna identificación de usuario para dejar de seguir. Debería poder usarlo como <% = button_to "Unfollow", unfollow_user_path (@user)%> – JDutil

+0

Muchas gracias ... Desafortunadamente button_to no funciona de la misma manera que link_to. – Vasseurth