Benutzerprofilseiten mit devise - Routing, um die Aktion anzuzeigen

7

Authentifizierung mit Gerät und einem separaten Controller (Benutzer), der eine einzelne "show" -Aktion darstellt

%Vor%

Bisher wurde in der Ansicht (users / show.html.erb) nur der Benutzername des Profils angezeigt, auf das zugegriffen wurde

%Vor%

Routing auch:

%Vor%

Ich möchte, dass diese Profilseiten öffentlich zugänglich sind, wenn sie einen Link dazu erhalten / der Adresse mitgeteilt werden, aber auch einen Link für einen aktuell angemeldeten Benutzer haben möchten, um sein Profil zu besuchen. Mein Ausschnitt aus meinem Header:

%Vor%

Momentan ist @user nur da, um einen Routing-Fehler zu stoppen. Ich bin mir nicht ganz sicher, wozu ich mich verbinde, habe einige Kombinationen ausprobiert, aber offensichtlich fehlt meinem neuen Geist etwas, was ich noch tun muss. Jede Hilfe wird sehr geschätzt!

(Rails 4, Ruby 2.0.0)

Randnotiz Ich würde auch gerne zulassen, dass der Link zu einer Profilseite den id + Benutzernamen im folgenden Format anzeigt: # {id} - # {username} (statt nur sei Benutzer / 1 - & gt; Benutzer / 1-bbvoncrumb).

    
bvcm 03.07.2013, 13:38
quelle

3 Antworten

14

Sie müssen User instance nur als Parameter an link_to übergeben, wenn Sie möchten, dass der Link auf die Seite show des angegebenen Benutzers verweist. Wenn Sie also mit dem aktuell angemeldeten Benutzerprofil in Devise verlinken möchten, brauchen Sie nur:

%Vor%     
Marek Lipka 03.07.2013, 13:47
quelle
3

Wenn Sie das aktuell angemeldete Benutzerprofil sehen möchten, vergewissern Sie sich, dass Sie eingeloggt sind.

Fügen Sie den before_filter :authenticate_user! im Benutzer-Controller hinzu.

Dann in der Kopfzeile <li><%= link_to "Profile", current_user %></li>

    
Debadatt 03.07.2013 13:50
quelle
2

Ich denke, das kann dir helfen.

In "Rails Routing von außen in",

  

Sie möchten zum Beispiel / profile immer das Profil des   aktuell angemeldeter Benutzer In diesem Fall können Sie eine Einzahl verwenden   Ressource zu Karte / Profil (anstatt / Profil /: ID) zur Show   Aktion.

%Vor%

Dies ist für private Profilseite.

Da sich die öffentliche Profilseite von der privaten Profilseite unterscheidet, würde ich einen Profil-Controller erstellen, um öffentliche Profile anzuzeigen.

    
Henry 03.07.2013 14:02
quelle