2011-06-29 18 views
2

エラーを別のページに表示するにはどうすればよいですか?エラー情報を別のページに表示する方法は?

は、私は、ユーザーフォルダ

の下で、別の場所、my_accountフォルダ内のフォームを持って、私はmy_accountのインデックスページ内のユーザーフォルダからフォームをレンダリングします。私はフォームを再利用して、ユーザーがユーザー情報を更新できるようにします。

ユーザーが更新をクリックすると、UserControllerの更新メソッドが呼び出されます。

私の質問は、ユーザーオブジェクトの更新に失敗した場合、エラーメッセージをmy_accountインデックスページに表示するにはどうすればいいですか?私はmy_accountページに「エラー」を印刷できる方法がわから次の操作を行いますしようとしましたが、いないメールアドレス

User 
    -- new.html.erb 
    -- _form 

my_account 
    -- index.html.erb 

の 例えば、無効な形式:

// try to update user information 

// if failed, redirect to my account page 
    format.html { redirect_to my_account_path, :error => @user.errors } 

答えて

0

ユーザオブジェクトにエラーを設定する必要があります。これは、<%= f.error_messages%>を<%form_for%>ブロック内で呼び出すときにエラーメッセージを表示するためにフォームヘルパーによって使用されます。

Railsのベストプラクティスは、我々は適切に割り当てられエラーが@userオブジェクトを渡すことを確認して、ないをリダイレクトし、はここをレンダリング呼び出すことです。

アクションをレンダリングするには、単に呼び出すことができます。

if [email protected] 
    render :action => '../my_account/index' 
end 

これを簡単にあなたの問題を解決する必要があります。あなたの@メンバー変数のすべてがindex.html.erbビューになるように設定されていることを確認してください。

+0

こんにちはghayes、エラーが表示されます。テンプレートがありません。../my_account/index with {:handlers => [:erb、:rjs、 :builder、:rhtml、:rxml]、:フォーマット=> [:html]、:ロケール=> [:en、:en]}私はルート設定で何かする必要がありますか? – jojo

+0

パスを "/ my_account/index"に変更してください...それは私のために働いています....素晴らしいthx .. – jojo

1

私はそれについてはよく分からないが、あなたのために働くかもしれません。

エラーが発生したときのuser_controllerの更新方法では、my_accountのインデックスページにリダイレクトし、エラーの詳細を渡してインデックスページに表示します。すなわち:

def update 
    @user = User.find(params[:id]) 
    ## update process and if fails 
    redirect_to :action=> 'index', :status=>:unprocessable_entity, :error=>@user.errors 
end 
+0

thxハリー...私はそれを試してみましょう... – jojo

+0

hmm..it does not't work ...どうすればエラーメッセージを受け取ることができますか? – jojo

+0

ページ上の「エラー」に何かが表示されますか? –

関連する問題