私は電子商取引アプリケーションを構築しており、かなり標準的なユーザモデルと注文モデルを持っています。ユーザーが注文するには、最初にログインする必要があります。私は、標準のログインフォームにBootstrapモーダルを使用しています。Rails:コントローラからログインモーダルを開く
私は、がログアウトしたときの方法を見つけようとしています訪問者はログイン\サインアップモーダルを表示するために注文ボタン(/ orders/newへのリンク)をクリックし、/orders/new pathにリダイレクトされます。
def new
@order = Order.new
if current_user
@order.user = current_user
@order.docs.build
else
redirect_to new_order_path
end
end
はここに私の現在のユーザー#新しいとユーザー#がメソッドを作成します:
は、ここに私の現在の受注#新しい方法です。私はthis guideを使用してモーダルをセットアップしました。
def new
@user = User.new
respond_modal_with @user
end
def create
@user = User.new(user_params)
respond_modal_with @user, location: root_path
respond_to do |format|
if @user.save
format.html {
login(params[:user][:email], params[:user][:password])
UserMailer.send_signup_email(@user).deliver_later
redirect_to root_path, notice: "You have successfully signed up"
}
format.json { render :show, status: :created, location: @user }
else
format.html { render :new, alert: "Registration failed" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
ここに重要な情報がない場合は申し訳ありません。それは私の初めての投稿であり、私は初心者です。あなたの助けを前もってありがとう!
編集: 私はDeviseを認証に使用していますが、私はすでにSorceryを認証に使用していると述べていました。その問題の一部は問題ではありません。私が抱えている問題は、Ordersコントローラからモーダルをトリガする方法です。ありがとう!
ユーザーが既にログに記録されているかどうかを確認し、sign_upメソッド内でリダイレクトを行うか、ログに記録するために使用している場合は、Deviseを使用するか、独自の認証を行う必要があります。しかし、あなたの意見のコードがないので何が間違っているのかを知ることは難しいので、それらを追加してみてください。 –
ありがとう@SebastiánPalma!私は認証のためにSorceryを使用しています。 Ordersコントローラの代わりにUserコントローラからリダイレクトすることでそれに近づいてみます。乾杯! –
私はDeviseとは異なり、Sorceryが 'logged_in?'メソッドを使ってログに記録されたユーザーを確認しているのを見ました。 –