1

複数の場所から特定のオブジェクトを更新する必要がある Rails アプリがあります。これらの更新の後、この更新を担当するコントローラーは常に元の場所にリダイレクトする必要があります。

これは、標準アクションredirect_to :backから来ている場合を除いて、 でうまく機能します。editそれからもちろん、編集フォームに戻ります。通常は、標準的な Rails の方法でshowアクションに移動したいと考えています。

更新が成功した後にリダイレクトする場所にパラメーターを渡すソリューションはありますか?

4

1 に答える 1

1

redirect_to :back、HTTP ヘッダー "HTTP_REFERER" ( requestActionDispatch::Request オブジェクトである変数に含まれる) に含まれるリンクにリダイレクトしています。

このリファラーを含むものをテストし、いくつかの値に対して異なる動作をすることができます:

def update
  @object = MyObject.find(params[:id])
  # etc...

  if request.env['HTTP_REFERER'].present? 
    if request.env['HTTP_REFERER'].include?('/some/path/to/edit/')
      redirect_to object_path(@object)
    else
      redirect_to :back
    end
  else
    redirect_to root_path
  end
于 2013-08-14T15:16:13.413 に答える