0

現在、2 つの異なるビューでパーシャルを再利用しています。

ビューA

ビューB

パーシャルはモデル A に属していますが、モデル B と関連付けられているため、モデル B にも適用できます。

フォームが含まれており、データが送信されると、常にユーザーをビュー A にリダイレクトします。ただし、ビュー B からフォームを送信すると、フォーム A ではなくビュー B にリダイレクトされたいと思います。

今すぐビュー A にリダイレクトする理由は、それがこのフォームが属するモデルだからです。したがって、投稿されると、コントローラ A と通信し、リダイレクトを使用してユーザーを a_url に移動します。

ユーザーを元の場所にリダイレクトするようにフォーム (またはコントローラー アクション) に指示するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

2

解決しました。

パーシャルがレンダリングされた場所のコントローラー名を含む隠しフィールドをフォームに追加し、respond_to ブロックがユーザーの送信先を決定しました。

コードを表示:

<%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>

私のコントローラーコード:

if params[:submitted_from] == 'A'
  redirect_to a_url
else
  redirect_to b_url
end
于 2009-01-15T21:52:49.903 に答える
0

非表示のタグを使用する代わりに、これをセッションに配置することができます。

session[:submitted_from] = new_model_url

そして他のアクションで..

redirect_to(session[:submitted_from])
session[:submitted_from] = nil

フォーム変数を切り替えるのは非常に簡単ですが、セッションを偽造するのは難しい (不可能ではない) かもしれません。それが私のアプリケーションであれば、私はこのルートに行きます。

于 2009-01-16T17:04:50.557 に答える