0

Rails 3 に Web アプリケーションがあり、ユーザーがフロントページにサインアップできるようにしたいと考えています。フロントページは a によって制御されPagesController、サインアップ プロセスは制御されますRegistrationController(私は Devise を使用しています)。フロントページにサインアップ フォームを追加しても問題ありません。フォームを正しく送信すると、すべてが機能します。フォームを部分的にレンダリングしました:

<%= render "/users/registrations/form" %>

そして、私が持っている形で

<%= simple_form_for(@user, :url => registration_path(@user)) do |f| %>

ただし、ユーザーがエラー (情報が不足しているなど) を送信しようとすると、ユーザーは標準のサインアップ ページにリダイレクトされます。エラーは正常に表示されますが、エラーメッセージが表示された状態で、ユーザーがフロントページにとどまるようにします。

まず最初に、サインアップ プロセスが失敗したときにフロントページを再度レンダリングする必要があり、エラー メッセージを表示する必要がありますが、標準のサインアップ ページは通常どおりに動作させたいと考えています。どうすればこれを最善の方法で行うことができ、それでもDRYに保つことができますか?

あなたが私を助けてくれることを願っています

4

2 に答える 2

1

必要なのは、デバイスのログイン失敗後にリダイレクトされるページをカスタマイズすることだと思います。

これは、この質問で回答されています:ログイン失敗後のリダイレクトを工夫する

サインアップ フォームを含む 2 つの異なるページがあり、それに応じてリダイレクトを区別したい場合は、リンクに記載されている CustomFailure クラスを次のように変更してみてください。

def redirect_url
  if URI(request.referer).path == your_path_for_your_frontpage
    your_path_for_your_frontpage
  else
    your_standard_path
  end
end
于 2013-05-09T16:18:54.877 に答える