2011-04-20 8 views
0

セーブで何か問題が生じたら、私は以下のことを今行っていますが、それはちょっと間違っているようです。保存がレールで失敗したときに戻ると移動しますか?

if @store.update_attributes(params[:store]) 
    redirect_to admin_stores_path, notice: "Updated ..." 
    else 
    flash[:alert] = "Error" 
    render action: 'edit' 
    end 

ブラウザを使用して戻る機能やredirect_backなどを使用する方がよいでしょうか?私は上記をどこからコピーしたかを覚えていないが、時には奇妙な結果を生む。

誰かが失敗した保存を処理する最善の方法を教えてもらえますか。ナビゲーション賢明?

答えて

4

renderredirectの代わりに使用される理由の多くを提供することができますので、それを使用しないことは簡単です:

  • あなたが保ちますオブジェクト変数は、ユーザーが間違えた場合にすべてを再入力する必要はありません。あなたはそれが

+0

他の言葉では何も間違っていません。答える時間をとっていただきありがとうございます。 – mhenrixon

+0

右:ありがとうございます:) – apneadiving

2

通常、コントローラのアクションを記述するときは、成功と失敗という2つの状況を処理します。エラーが発生した場合と同じアクションで検証エラーを表示し、処理が成功するとredirect_to somewereになります。これは一般的な習慣であり、あなたはRailsに関する別の本でそのような「パターン」を見つけることさえできます。 redirect_toについて :バック、私はそれがトラブル:)

+0

+1お返事ありがとうございます。 – mhenrixon

+0

あなたは歓迎です – bor1s

1

これはレールでフォームの送信を処理するための最も使用される方法ですにそれらを表示する必要があるので、

  • エラーは、オブジェクト自体の内部に格納されています。オブジェクトが保存されると、ユーザーは他のページ、主にページをリダイレクトするようにします。

    最も重要なのはレンダリングアクションです。レンダリングアクションとは、実際にそのアクションのビューをレンダリングする場合です。ビューにはform_forとerror_message_forがあり、プレフォームの入力値とオブジェクトの保存中に発生するオブジェクト・エラーを持つフォームをレンダリングします。

  • +0

    +1お時間をいただきありがとうございます。 – mhenrixon

    関連する問題