1
我需要一些關於我正在處理的RoR應用程序的幫助。到目前爲止,這是一個非常簡單的應用程序,我使用Devise進行身份驗證。RoR - 設計:用戶在通過嵌套形式註冊時未登錄
我的應用程序有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的通常Devise路由創建新用戶時那樣自動登錄。
任何人都可以解釋我要去哪裏錯或我失蹤了嗎?
謝謝。
沒有,只是試圖在我的合作伙伴控制器添加此到創建行動,但仍然沒有運氣 –
添加你的伴侶控制器代碼。另外,請確保模型持久保存 –
@ChrisArnold我在控制器中看不到sign_in代碼 –