2017-09-05 185 views
0

我使用公寓寶石來實現多租戶。在應用程序上註冊時,我想將他重定向到他自己的本地主機(例如xyz.localhost:3000)的url示例等。 註冊我得到所有必要的數據。 a。電子郵件,b。 first_name,c.last_name,d。密碼,e.password_confirmation,f.subdomain如何在公寓寶石註冊後重定向用戶

和我的控制器看起來像:

class Diy::AdminController < ApplicationController 
    layout false 

    def register 
     admin = AdminUser.find_by_email params[:email] 
     unless admin 
     admin = AdminUser.create(
     first_name:params[:first_name], 
     last_name: params[:last_name], 
     email: params[:email], 
     password: params[:password], 
     password_confirmation: params[:password_confirmation], 
     subdomain: (params[:subdomain] ? params[:subdomain].downcase : params[:first_name].downcase)) 
     end 
     sign_in(admin, bypass: true) 
    end 
    end 

我得到模板丟失的錯誤。 我想爲不同的用戶提供不同的主頁,他們可以自定義它,但是如果他們不會看到簡單的主頁。

回答

1

此刻,您在登錄AdminUser後沒有重定向。因此,Rails會查看控制器操作以便模板呈現,在這種情況下,在Diy/Admin下沒有「註冊」模板名稱空間。

每個AdminUser都有自己的顯示頁面嗎?

如果是這樣,我會爲每個AdminUser添加一個名爲say'homepage'的屬性,並且當AdminUser編輯他們的主頁時,將該屬性設置爲true。

然後之後你在管理用戶登錄,只需將其重定向到無論他們的表演頁面或取決於屬性根頁面:

def register 
    admin = AdminUser.find_by_email params[:email] 
    unless admin 
    admin = AdminUser.create(
    first_name:params[:first_name], 
    last_name: params[:last_name], 
    email: params[:email], 
    password: params[:password], 
    password_confirmation: params[:password_confirmation], 
    subdomain: (params[:subdomain] ? params[:subdomain].downcase : params[:first_name].downcase)) 
    end 
    sign_in(admin, bypass: true) 
    redirect_to admin.homepage? admin : root_path 
end 

你可以簡單地刪除這樣的檢查,離開它:

redirect_to admin 

但是,這將重定向AdminUser是否已經制作了自己的頁面。需要注意的是

redirect_to admin 

相同

redirect_to admin_path(admin)