J'essaie de créer une page utilisateur show
(qui fonctionnera comme une page de profil) mais je ne sais pas comment faire cela avec Devise. Il ne semble pas que Devise soit fourni avec une sorte de définition show
- existe-t-il un moyen d'accéder aux contrôleurs que Devise implémente pour en créer un ou dois-je les remplacer?
Réponses
Trop de publicités? Vous devez générer un users_controller
qui hérite de application_controller
et y définir votre méthode personnalisée show
. N'oubliez pas de lui créer une vue et des itinéraires. Ex:
#users_controller.rb
def show
@user = User.find(params[:id])
end
#in your view
<%= @user.name %>
#routes.rb
match 'users/:id' => 'users#show', via: :get
# or
get 'users/:id' => 'users#show'
N'oubliez pas que les itinéraires de vos utilisateurs doivent être inférieurs aux itinéraires des utilisateurs de devise_for, comme ceci:
#routes.rb
devise_for :users
resources :users, :only => [:show]
De plus, si vous utilisez un nom d'utilisateur ou un e-mail comme clé primaire au lieu de l'ID habituel, vous devez éviter les conflits de routage en déclarant vos itinéraires comme suit:
#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]