我有一个我无法弄清楚的简单问题。
我有一个使用子域名的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) %>
您对如何从控制器重定向到子域有任何想法吗?
答案 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") ...