Ruby on rails 是否可以通过Rails将记录重定向到?
我正在尝试管理用户注册并使用omniauth登录。我还想在用户向提供商授权后收集更多有关用户的信息。此时,Ruby on rails 是否可以通过Rails将记录重定向到?,ruby-on-rails,Ruby On Rails,我正在尝试管理用户注册并使用omniauth登录。我还想在用户向提供商授权后收集更多有关用户的信息。此时,Vendor\from_omniauth返回一个现有的Vendor或一个新的Vendor记录,其auth散列已经填充。是否可以将新记录传递给供应商控制员,以便表单可以方便地使用它 我使用的是Rails 4 class SessionsController < ApplicationController def create vendor = Vendor.from_omni
Vendor\from_omniauth
返回一个现有的Vendor或一个新的Vendor记录,其auth散列已经填充。是否可以将新记录传递给供应商控制员,以便表单可以方便地使用它
我使用的是Rails 4
class SessionsController < ApplicationController
def create
vendor = Vendor.from_omniauth(env["omniauth.auth"])
if vendor.new_record?
redirect_to new_vendor_url(vendor)
else
session[:vendor_id] = vendor.id
redirect_to root_url, notice: "Signed in!"
end
end
end
class sessioncontroller
此问题通过将新供应商url(供应商)
更改为新供应商url(供应商:vendor.attributes)
HTTP是无状态的,因此您需要在参数、会话(通过cookie或其他)或数据库中包含信息
鉴于您似乎正在进行注册过程,我可能倾向于在您获得信息后立即将其放入数据库。这是一个额外的先写后读的过程,但是如果用户中途退出,您仍然可以联系他们(理论上)以恢复注册。将
供应商.id
作为参数传递给新供应商\u url
,然后在呈现的操作中执行查找:
# app/controllers/sessions_controller.rb
redirect_to new_vendor_url(:vendor_id => vendor.id)
# app/controllers/vendors_controller.rb
def new
vendor_from_session = Vendor.find(params[:vendor_id])
# code here
@vendor = Vendor.new
end
重定向就是重定向;您可以通过正常参数传递足够的信息来重新创建对象,或者将其放入会话中(如果它很小,您使用的是cookie,或者任意大小,您使用的是另一个会话存储),等等。您在这方面运气好吗?以下任何解决方案对您有效吗?