2012-11-13 47 views
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路由創建新用戶時那樣自動登錄。

任何人都可以解釋我要去哪裏錯或我失蹤了嗎?

謝謝。

回答

1

在你的控制器,你在幹什麼:

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 
+0

沒有,只是試圖在我的合作伙伴控制器添加此到創建行動,但仍然沒有運氣 –

+0

添加你的伴侶控制器代碼。另外,請確保模型持久保存 –

+0

@ChrisArnold我在控制器中看不到sign_in代碼 –