Ruby on rails 是否可以通过Rails将记录重定向到?

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

我正在尝试管理用户注册并使用omniauth登录。我还想在用户向提供商授权后收集更多有关用户的信息。此时,
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,或者任意大小,您使用的是另一个会话存储),等等。您在这方面运气好吗?以下任何解决方案对您有效吗?