2017-09-05 175 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)