簡體   English   中英

RoR-Devise:通過嵌套表單注冊時用戶未登錄

[英]RoR - Devise: User not logged in when signing up through nested form

我正在使用的RoR應用程序需要一些幫助。 到目前為止,這是一個非常簡單的應用程序,我正在使用Devise進行身份驗證。

我的應用程序有2個模型,用戶模型和合作伙伴模型。 合作伙伴創建新帳戶時,其“合作伙伴”詳細信息將保存到“合作伙伴”表中,而其“用戶”詳細信息(在本例中為電子郵件和密碼)將保存到“用戶”表中。 我是通過創建一個表單(合作伙伴/新表單)為用戶完成的,該表單具有嵌套的表單。

合作伙伴視圖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 %>

合作伙伴模型partner.rb

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

我遇到的問題是盡管創建了一個新的合作伙伴並將其保存到“用戶”和“合作伙伴”表中,但是它們並沒有像您通過常規的用戶/登錄設計路線創建新用戶時那樣自動登錄。

誰能解釋我要去哪里或我想念什么?

謝謝。

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

sign_in @partner.user

UPDATE

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM