質問

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

  

ビューA

     

ビューB

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

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

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

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

ありがとう!

役に立ちましたか?

解決

解決済み。

パーシャルがレンダリングされた場所のコントローラー名を含む非表示フィールドをフォームに追加し、次に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

他のヒント

隠しタグを使用する代わりに、セッションにこれを配置することもできます。

session[:submitted_from] = new_model_url

およびその他のアクション..

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top