2012-03-20 12 views
0

私は、プロファイル生成機能RESTwiseを作成するより良い方法について考えてきました。安心してハンドルプロファイルを処理する

私のメニューには、生成されたものであろうとなかろうと、ユーザーのプロフィールへのリンクが常にあるという考えがあります。しかし、最初にユーザがプロファイルを生成しなければならないので、プロファイルが表示されます。

説明すると、ユーザーが最初にプロファイルを作成すると、 '/ profiles/new'を指すメニュー項目があり、 'profile /:id'に動的に変更されることがあります。これは当たり前のことですが、私は@profileインスタンス変数をアプリケーションコントローラで取得する必要があるのが好きではありません(毎回、動的にリンクを生成するためにチェックする必要があるため)。

もう1つのアイデアは、リダイレクトが起こっている可能性があります。おそらく2つのうちの最高のものです。ユーザーは/ profiles/newパス(またはエイリアス)をクリックし、すでにプロファイルが設定されている場合は 'profile /:id'にリダイレクトされます。

私は考えていない別の選択肢はありますか?

答えて

1

/profile/newにあいまいなリソースが導入されているので、リダイレクトはわかりませんが、毎回@profileを取得する必要はありません。私は

def link_to_user_profile(html = {}) 

    if user_signed_in? 
    @profile = current_user.profile 
    link = profile_path(@profile) 
    text = 'Your Profile' 
    else 
    link = new_profile_path 
    text = 'Create a Profile' 
    end 

    link_to text, link, html 
end 

user_signed_in?は、ユーザー(current_user)であることを確認してしまうのヘルパーであると仮定すると、実際には、ログイン、あなたはこのようになり、アプリケーションのヘルパーディレクトリ内のリンクヘルパーを作成することができますどこにでも変数を作っていますが、うまくいけば、これは役に立ちます!

+0

こんにちは、返信にはありがとう:)私は実際には、標準のパスである 'プロフィール/新'を意味しました。しかし、私のプロフィールはサインインに関するものではありません。それは単にユーザーが作成するかどうかによって異なります。サインインプロセスは異なる方法で処理されます。あなたの例では、サインインは私がチェックする必要が本当に何かではないので(私の場合は少なくとも)、プロフィールを毎回取得する必要があります – Spyros

+0

ああ、それを得ました。プロファイルが作成されたかどうかを確認するために使用できる同様のテストはありますか?おそらく、 'user'モデルに付けられたフラグですか?いずれにしても、私はまだ/ profiles/newが_既存のプロフィールを参照しているという考えでは少し不快です^^) – rjz

+0

ええ、それは私が好きではないことです。別のアクションにリダイレクトします。私はそれが範囲外のビットを見つける。しかし、他のオプションはプロファイルを取得しているので、それを得るための他のオプションはわかりません:/ Thanx for the idea、+1 :) – Spyros

0

新しいプロファイルafter_createをデフォルト値で作成することも考えられます。この場合、ユーザーは常にデフォルトプロファイルを持ちます。

+0

サンクスですが、それは私がそれを記述する方法で行わなければなりません。 – Spyros

関連する問題