[英]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.