2013-07-03 27 views
7

工夫による認証とシングル「ショー」アクションこれまでユーザー・プロファイル・ページ - ルーティングビュー(ユーザー/ show.html.erbアクション

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 

ある別のコントローラ(ユーザー)を表示します私はこれらの教授をしたいと思い

resources :users 

:)のみ

<%= @user.username %> 

ルーティングもアクセスプロファイルのユーザー名を表示します彼らがリンクを張った場合に公的にアクセスできる/アドレスを教えただけでなく、現在ログインしているユーザーが自分のプロフィールにアクセスできるようにするためのリンクも必要です。私のヘッダーのスニペット:

<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> 

現在、@userはルーティングエラーを止めるためのものです。私は完全には何にリンクするか、かなりの組み合わせを試みたが、明らかに私のレール新人心は私がする必要がある何かが欠けている。どんな助けでも大歓迎です!

(レール4、ルビー2.0.0)

サイドノート Iはまた、最終的には、プロフィールページへのリンクの形式でID +ユーザ名を表示できるようにしたいと思います:#{ID} - #{username}(user/1 - > users/1-bbvoncrumbだけではなく)。

+0

あなたはユーザーページにリンクしたいですか? –

答えて

14

Userインスタンスをパラメータとしてlink_toに渡すだけで、指定したユーザーのshowページにリンクする必要があります。あなたが現在考案中のユーザーのプロファイルにログインするためにリンクさせたいのであれば、あなただけの必要があります。

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

ああ男。私は自分自身を撃つべきです。なぜ私はこれを逃したと確信しています。とても有難い! – bvcm

3

はあなたがログインしていることを確認し、プロファイルのユーザーでログインして電流を見たい場合は

追加します。ユーザーコントローラーのbefore_filter :authenticate_user!

は、次にヘッダーのリンク<li><%= link_to "Profile", current_user %></li>

2

に私は、これはあなたを助けるかもしれないと思います。で

例えば

、「Railsは、外部からのルーティング」、あなたは常に現在ログインしているユーザー のプロフィールを表示/プロファイルをしたいと思います。この場合、 という単数のリソースを使用して、show/ アクションに/ profile(/ idではなく)をマッピングすることができます。プライベートプロフィールページです

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

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

パブリックプロファイルページはプライベートプロファイルページとは異なるため、パブリックプロファイルを表示するプロファイルコントローラを作成します。

関連する問題