子域名rails 3

时间:2011-03-18 13:12:52

标签: ruby-on-rails-3 subdomain

我有一个我无法弄清楚的简单问题。

我有一个使用子域名的rails 3应用程序。

公司有很多用户。当用户登录时,我想将它们重定向到他们的公司子域。

我使用了Ryan Bates的截屏来获得子域名。 http://railscasts.com/episodes/221-subdomains-in-rails-3

在我的user_sessions_controller中,我有。

def create
@user_session = UserSession.new(params[:user_session])

if @user_session.save
  @firm = current_user.firm
  flash[:notice] = "Successfully logged in."
  redirect_to root_url(:subdomain => @firm.subdomain)
else
  render :action => 'new'
end

这会向公司中的用户发送子域名lizz到此URL

http://lvh.me:3000/?subdomain=lizz

当用户登录时,此链接正常工作

<%= link_to current_firm.subdomain, root_url(:subdomain => current_firm.subdomain) %>

您对如何从控制器重定向到子域有任何想法吗?

1 个答案:

答案 0 :(得分:3)

我认为你的问题是,你是名为url root_url的网址。您修改的辅助方法url_for(如果您密切关注Railscast)可能不会用于指定的URL。

请尝试使用url_for

修改

名称网址是在actionpack-3.0.x / lib / action_dispatch / routing / route_set.rb中生成的,不会使用您的自定义url_for方法。但是,是否支持:host参数,因此您需要编写类似

的内容
... root_url(:host => "#{current_firm.subdomain}.domain.tld") ...