2011-03-23 3 views
1

Comment créer des profils public? J'utilise Devise et seulement/user /. L'utilisateur peut voir seulement son profil, je veux faire/user/user_id.Profils utilisateur publics? Ruby on Rails + Devise

user_id - profil d'utilisateur public.

+0

N'est-ce pas simplement écrire un contrôleur qui définit '@ user' comme' @user = User.find (params [: id]) ', en supposant que' @ user' est ce que vous utilisez dans votre vue de profil ? –

+0

Je fais blog aka twitter (par expérience, je suis RoR). Je suis l'utilisateur 1 et je veux voir le profil public de l'utilisateur 2 (photo, emplacements, bio, derniers messages). – Pyrchev

Répondre

1

Vous devez créer une route sur le fichier config/routes.rb comme ci-dessous. Et puis implémentez votre méthode et vue de contrôleur.

match 'show/:id' => 'user#show' 
0

Je ne suis pas d'expérience, mais je l'ai fait comme ceci:

  • Dans les automates créer un users_controller.rb

  • En vue de créer/utilisateurs/vues typiques, pour exemple index et show (bien sûr les définir dans votre contrôleur)

  • Dans les routes ajouter resources :users

Vous pouvez simplement ajouter des migrations à la table des utilisateurs, comme

$ rails g migration add_birthday_to_users birthday:date 

et montrer les utilisateurs /: page id

3

Pour un profil public en utilisant devise, assurez-vous avoir une route mis en place comme

resources :users 

et assurez-vous que vous avez une action de contrôleur mis en place pour gérer la ressource d'exposition. Si ce n'est pas le cas, créez un contrôleur users_controller.rb et donnez-lui une définition de classe, avec une méthode show.

class UsersController < ApplicationController 
    def index 
    @users = User.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @users } 
    end 
    end 

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

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @user } 
    end 
    end 
end 

Parcourir à côté /users/1 ou /users/2 (si vous avez deux utilisateurs mis en place) et vous devriez voir les deux profils. Pour les définir sur private, vous devez effectuer un filtre before dans l'action du contrôleur, en vérifiant l'ID current_user par rapport au param[:user_id].