現在、Railsがどのように動作しており、検証結果に応答しているかに問題があります。私はユーザー登録フォームを持っています。ユーザーは2つの異なる場所でこのフォームに当てることができます。彼らはホームページやusers/new
からフォームにヒットすることができます。どちらの書式も同じ場所に投稿しますが、私はそれをDRYにしています。Railsバリデーション条件付きリダイレクト
users/new
ページは期待どおりに動作します。ユーザーに検証の問題がある場合は、フォームが返され、入力されます。どこに問題があるのかはホームページにあります。ユーザーに確認の問題がある場合、users/new
ページにリダイレクトされます。私は多くの場合、ホームページにいるときに同じページにユーザーを戻し、そこに検証結果を表示することをお勧めします。コントローラに、ユーザーがいたフォームにリダイレクトする方法はありますか?
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" } # I'm thinking I can do something here?
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
私は、ユーザーのURLにリダイレクトするrender :action => 'new'
行を変更しようとしたが、それは働いていません。私は行方不明のものがありますか?
したがって、ユーザーがホームページで検証の問題が発生した場合、リダイレクトされず、間違った表示がレンダリングされます...正しいのですか? – dontangg
正しい。検証の問題により、ユーザーは常にユーザーフォームに移動します。元のフォームがインデックスページにあったとしても。残念ながら、ユーザーは2つの場所から登録することができます。 –