gpt4 book ai didi

ruby-on-rails - 设备登录后提交表单

转载 作者:行者123 更新时间:2023-12-03 22:41:18 26 4
gpt4 key购买 nike

我试图让用户在未登录的情况下提交预订请求。在他们提交后,未经授权的用户会被提示登录或注册。注册后,我希望提交表单并将(新注册的)用户带到结帐页面。

商店位置保留最后一页以在登录后返回用户。我需要弄清楚如何通过提交表单并将其放在注册/登录后的结帐页面上来继续用户的预期路径。

  def store_location
#stores the last url. Used for post-login redirects to what the user was trying to do last.
if (!request.fullpath.match("/users/") && !request.xhr?) # don't store ajax calls
session[:previous_url] = request.fullpath
end
end

最佳答案

好吧,我认为这很脏,但我还没有找到另一种方法来做到这一点。

after_sign_in_path_for 是 Devise 调用的一种方法,允许您在登录后将人们发送到不同的页面。

我从 Controller 中取出了所有创建逻辑并将其放入服务对象中。

  def after_sign_in_path_for(resource)
if session[:booking_params].present?
@booking = Booking::CreateBooking.new(user:current_user, params: session[:booking_params]).return_booking
checkout_booking_path(@booking.public_id)

else
session[:previous_url] || root_path
end
end

在 Controller 中,create 方法分为两部分。如果没有当前用户,我将他们的参数保存到 session 中,然后将他们发送到登录。如果存在则正常调用CreateBooking服务对象。

  def create
if current_user.nil?
session[:booking_params] = params
redirect_to new_user_registration_path
else
@booking = Booking::CreateBooking.new(user:current_user, params:params).return_booking
respond_to do |format|
format.html { redirect_to checkout_booking_path(@booking.public_id) }
end
end
end

在 after_sign_in_path_for 方法中,我检查 session 参数并在那里创建预订。

如果有更好的方法,请告诉我!

关于ruby-on-rails - 设备登录后提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com