2011-07-03 2 views
0

Je veux avoir un bouton qui va à un utilisateur aléatoire sur mon site. J'utilise la gemme friendly_id donc les URL sont, par exemple, /users/dean et je l'ai aussi mis en place donc c'est /dean.Créer un bouton 'Utilisateur aléatoire' sur mon application web Rails 3

Je devine que je voudrais ajouter quelque chose de semblable à cela dans mon routes.rb fichier:

match '/users/random' => 'users#index'

Et puis un code supplémentaire dans le contrôleur de l'utilisateur?

Comment ferais-je cela?

Merci beaucoup.

+0

Voulez-vous _show_ un profil utilisateur aléatoire, ou rediriger vers un hasard? – Dogbert

+0

Je voudrais rediriger vers un utilisateur aléatoire –

Répondre

1

Je ferais ceci:

Définition d'une méthode de classe random sur le modèle de l'utilisateur (ou dans un module qui est inclus dans votre modèle si vous souhaitez le réutiliser pour d'autres modèles plus tard).

class User 
    def self.random 
    offset = rand(count) 
    first(:offset => offset) 
    end 
end 

Other ways of getting a random record, if performance becomes an issue.

Ajouter une action random dans votre UsersController comme celui-ci

def random 
    redirect_to User.random 
end 

Et enfin créer un itinéraire

match '/users/random' => 'users#random' 
+0

C'est excellent, merci! –

+0

Juste une petite question, comment puis-je le faire afin qu'il montre seulement les utilisateurs avec du contenu dans 'image_url'? –

0

Je voudrais avoir une action spécifique random dans le contrôleur d'utilisateur et localiser la logique pour choisir un utilisateur là. Renvoie une redirection vers la route vers cet utilisateur à partir de cette action. Je préférerais que cela complique l'action d'index avec une logique supplémentaire pour gérer une action différente.

+0

Je vois donc dans les routes, ce serait quelque chose comme 'match '/ users/random' => 'utilisateurs # random''? Pourriez-vous dire quel code je devrais mettre dans le contrôleur d'utilisateur? Je suis seulement nouveau à Rails et il aidera les autres :) –

Questions connexes