Ruby on rails RoR-设计:通过嵌套表单注册时用户未登录

Ruby on rails RoR-设计:通过嵌套表单注册时用户未登录,ruby-on-rails,devise,Ruby On Rails,Devise,我需要一些关于我正在处理的RoR应用程序的帮助。到目前为止,它是一个非常简单的应用程序,我正在使用Desive进行身份验证 我的应用程序有两种型号,用户和合作伙伴。当合作伙伴创建新帐户时,他们的“合作伙伴”详细信息将保存到合作伙伴表中,他们的“用户”详细信息(在本例中为电子邮件和密码)将保存到用户表中。为此,我创建了一个表单(partners/new),它为用户提供了一个嵌套表单 合作伙伴视图new.html.erb <%= f.inputs do %> <%= f.inp

我需要一些关于我正在处理的RoR应用程序的帮助。到目前为止,它是一个非常简单的应用程序,我正在使用Desive进行身份验证

我的应用程序有两种型号,用户和合作伙伴。当合作伙伴创建新帐户时,他们的“合作伙伴”详细信息将保存到合作伙伴表中,他们的“用户”详细信息(在本例中为电子邮件和密码)将保存到用户表中。为此,我创建了一个表单(partners/new),它为用户提供了一个嵌套表单

合作伙伴视图new.html.erb

<%= f.inputs do %>
  <%= f.input :name %>
  <%= f.semantic_fields_for :user do |t| %>
    <%= t.input :email %>
    <%= t.input :password %>
    <%= t.input :password_confirmation %>
  <% end %>
  <%= f.input :telephone %>
  <%= f.input :address %>
  <%= f.input :payout_details %>
  <%= f.input :preferred_payment %>
  <%= f.input :terms_and_conditions, :as => :boolean %>
<% end %>
after_initialize :create_user
def create_user
  self.user ||= User.new
  self.user.roles = "partner"
end
合作伙伴控制器

class PartnersController < ApplicationController
  # GET /partners
  def index
    @partners = Partner.all
  end

  # GET /partners/1
  def show
    @partner = Partner.find(params[:id])
  end

  # GET /partners/new
  def new
    @partner = Partner.new
  end

  # GET /partners/1/edit
  def edit
    @partner = Partner.find(params[:id])
  end

  # POST /partners
  def create
    @partner = Partner.new(params[:partner])
    sign_in @partner.user

    respond_to do |format|
      if @partner.save
        format.html { redirect_to @partner, notice: 'Partner was successfully created.' }
      else
        format.html { render action: "new" }
      end
    end
  end

  # PUT /partners/1
  def update
    @partner = Partner.find(params[:id])

    respond_to do |format|
      if @partner.update_attributes(params[:partner])
        format.html { redirect_to @partner, notice: 'Partner was successfully updated.' }
      else
        format.html { render action: "edit" }
      end
    end
  end

  # DELETE /partners/1
  def destroy
    @partner = Partner.find(params[:id])
    @partner.destroy

    respond_to do |format|
      format.html { redirect_to partners_url }
    end
  end
end
class PartnersController
我遇到的问题是,尽管创建了一个新的合作伙伴并将其保存到用户表和合作伙伴表中,但它们不会像您通过用户/登录的常规设计路径创建新用户时那样自动登录

有人能解释一下我哪里出了错或者我遗漏了什么吗


谢谢。

在控制器中,您正在执行以下操作:

sign_in @partner.user
更新

def create
  @partner = Partner.new(params[:partner])

  respond_to do |format|
    if @partner.save
      sign_in @partner.user
      format.html { redirect_to @partner, notice: 'Partner was successfully created.' }
    else
      format.html { render action: "new" }
    end
  end

在控制器中,您正在执行以下操作:

sign_in @partner.user
更新

def create
  @partner = Partner.new(params[:partner])

  respond_to do |format|
    if @partner.save
      sign_in @partner.user
      format.html { redirect_to @partner, notice: 'Partner was successfully created.' }
    else
      format.html { render action: "new" }
    end
  end

没有,只是尝试将其添加到“我的合作伙伴控制器”中的“创建”操作中,但仍然没有luckadd您的合作伙伴控制器代码。另外,确保模型正在持久化,并添加了我的合作伙伴控制器代码。当你说是我的模特时,我不确定你的意思(这里是Rails新手),对不起。不过谢谢你的帮助。很抱歉,刚刚将其重新添加到“创建”action@ChrisArnold在正确位置使用登录更新(仅在保存后)否,只是尝试将其添加到“我的合作伙伴控制器”中的“创建”操作中,但仍然没有添加您的合作伙伴控制器代码。另外,确保模型正在持久化,并添加了我的合作伙伴控制器代码。当你说是我的模特时,我不确定你的意思(这里是Rails新手),对不起。不过谢谢你的帮助。很抱歉,刚刚将其重新添加到“创建”action@ChrisArnold在正确位置使用登录更新(仅在保存后)