2011-10-10 36 views
0

即時通訊使用'設計'創業板上的軌道3.1.1應用程序創建用戶和登錄,但我需要添加字段的配置文件作爲@ user.build_profile,但我不知道在哪裏要添加此項,我還需要在登錄後更改默認的redirect_to。設計寶石,添加建設者,並改變redirect_to

回答

1

您可以像正常情況下通過遷移一樣將所需的字段添加到模型中。如果您通過rails generate devise:views使用默認設計視圖,那麼您需要將您的字段添加到設計中的註冊視圖內部的newedit視圖中。

至於更改sign_in後的默認重定向,我會開始閱讀Devise Wiki。您可以簡單地添加到您的應用程序控制器:

protected 

     def stored_location_for(resource) 
     nil 
     end 

     def after_sign_in_path_for(resource) 
     #path to which you wish to redirect 
     end 
end 

這將允許您自定義該路線。您還可以查看設計中的註冊控制器,以查看可以覆蓋的其他方法。

編輯:

重寫控制器:

你會創建自己的控制器,從Devise::RegistrationsController繼承。從那裏你只需要指定你需要重寫的方法,而不是每一個。例如:

def create 
    build_resource 
    resource.build_profile 

    if resource.save 
    set_flash_message :notice, :signed_up 
    redirect_to after_sign_up_path_for(resource) 
    else 
    clean_up_passwords(resource) 
    render_with_scope :new 
    end 
end 

然後添加上述線stored locationafter_sign_in_path。你還必須告訴Devise在你的routes.rb中使用你的新控制器,devise_for :users, :controllers => { :registrations => 'your_controller_name }我在我的博客上有一個這樣的例子,完整的源代碼在Github上。

+0

我需要從使用嵌套屬性 – jtomasrl

+0

另一個模型添加fiels所以你要確保你的用戶模型'accepts_nested_attributes_for:profile'。然後您需要重寫Devise註冊控制器以使用'@ user.profile.build'來創建您自己的創建操作,顯然會在用戶和配置文件之間創建適當的關係。 – janders223

+0

這是問題。我如何覆蓋控制器 – jtomasrl

1

,或者你只是覆蓋build_resource

def build_resource *a, &b 
    super 
    resource.build_profile 
end