如何在rails中实现用户特定的子域

Pri*_*ale 0 ruby subdomain routing ruby-on-rails

我正在编写一个rails应用程序,用户可以拥有自己的基于用户名的子域,如GitHub pages => USERNAME.github.io

我所做的是创建一个控制器,它从请求中解析子域并找到相应的用户.

def show
 @user = User.where(name: request.subdomain)
end
Run Code Online (Sandbox Code Playgroud)

现在应该如何编写我的路由,以便我可以接受任何用户特定的子域并将其指向上述控制器

Jon*_*Jon 5

是的,您可以在路线中获取子域并直接指向您的控制器.

您将使用帮助程序或在具有regexp的路由中获取子域.一个正则表达式的例子如下

get '/', to: 'controller#show', constraints: { subdomain: '/^[a-zA-Z]*/' }
Run Code Online (Sandbox Code Playgroud)

上面的例子应该得到一个典型的子域名.

你可以在下面的链接中找到一些很好的例子.rails cast有一个非常好的子域路由示例

http://guides.rubyonrails.org/routing.html http://railscasts.com/episodes/221-subdomains-in-rails-3