2012-02-24 1 views
0

2つの異なる場所で自分のProfileオブジェクトを編集して更新します。たとえば、settings_pathのプロファイルを編集/更新するときは、「更新されたユーザー情報が正常に表示されました。 join_pathでプロフィールを編集/更新するときに、「プロフィールが作成されました」とか何も言わないと言ってみたいと思います。Rails 3のパスからのリダイレクトに応じて、1つのコントローラアクションに対して2つの異なる通知を提供します。

これは可能でしょうか?

は、ここに私のProfiles#updateアクションです:

def update 
    @profile = user.profile 
    if @profile.update_attributes(params[:profile]) 
    redirect_to profile_path, :notice => 'Updated user information successfully.' 
    else 
    render :edit 
    end 
end 

答えて

0

あなたは、フォームがrequest.referrerを使用してから投稿された場​​所などを見て確認することができます

def update 
    @profile = user.profile 
    if @profile.update_attributes(params[:profile]) 
    if request.referrer == settings_path 
     notice_message = 'Updated user information successfully' 
    elsif request.referrer == join_path 
     notice_message = 'Profile created' 
    else 
     notice_message = 'Profile Updated' # default message 
    end 

    redirect_to profile_path, :notice => notice_message 
    else 
    render :edit 
    end 
end 

このコードはかなり多くクリーンアップできますが、それはそのテーマを生成します。

+0

私はあなたが持っていたものを取ったが、それは何らかの理由でうまくいかなかった。 request.referrerをURIにラップする - それはしたが、URI(request.referrer).path == "/ signup/join"。ありがとう! – tvalent2

関連する問題