2013-07-03 10 views
7

Autenticazione con disposizione testamentaria e un controller separato (Utenti), che è una singola azione 'show'pagine profilo utente con disposizione testamentaria - Routing per mostrare l'azione

class UsersController < ApplicationController 
#before_filter :authenticate_user! 

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

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

Finora la vista (utenti/show.html.erb) visualizza solo il nome utente del profilo letta

<%= @user.username %> 

Routing anche:

resources :users 

desidero questi prof le pagine di ile devono essere accessibili pubblicamente se ottengono un link ad esso/hanno detto l'indirizzo, ma vogliono anche un link disponibile per un utente attualmente connesso per visitare il suo profilo. My a snippet dal mio header:

<li><%= link_to "Profile", @user %></li> 
<li><%= link_to "Settings", edit_user_registration_path %></li> 
<li><%= link_to "Logout", destroy_user_session_path, method: "delete" %></li> 

Attualmente, @user è solo lì per fermare un errore di routing. Non sono del tutto sicuro su cosa collegare, ho provato diverse combinazioni, ma ovviamente la mia mente di principiante non ha bisogno di qualcosa in più che devo fare. Ogni aiuto è molto apprezzato!

(Rails 4, Ruby 2.0.0)

nota a margine vorrei anche, eventualmente, consentire il collegamento a una pagina di profilo per visualizzare l'id + nome utente nel formato: # {id} - # {nomeutente} (invece di essere solo utenti/1 -> utenti/1-bbvoncrumb).

+0

Quindi vuoi collegarti alla pagina utente, giusto? –

risposta

14

È sufficiente passare l'istanza User come parametro a link_to se si desidera collegarlo alla pagina specificata dell'utente show. Quindi, se si desidera collegare attualmente loggato profilo dell'utente in Devise, basta:

<li><%= link_to "Profile", current_user %></li> 
+3

Oh uomo. Dovrei spararmi. Non so perché mi sia mancato questo e grazie mille per la risposta chiara. Molto apprezzato! – bvcm

3

Se volete vedere la corrente gli utenti registrati scheda tecnica assicurarsi aver effettuato l'accesso

aggiungere il. before_filter :authenticate_user! nel controller degli utenti.

Poi nel collegamento nell'intestazione <li><%= link_to "Profile", current_user %></li>

2

Penso che questo possa aiutare.

In "Rails di routing dall'esterno verso l'interno",

Per esempio, si desidera/profilo di mostrare sempre il profilo della utente attualmente connesso. In questo caso, puoi utilizzare una singola risorsa per mappare/profilo (anziché/profile /: id) all'azione show .

match "profile" => "users#show", :as => 'profile' 

<li><%= link_to "Profile", profile_path %></li> 

Questo è per la pagina di profilo privato.

Poiché la pagina del profilo pubblico sarà diversa dalla pagina del profilo privato, vorrei creare un controller profili per mostrare i profili pubblici.

Problemi correlati