at.*_*at. 8 routes ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4
我动态创建表单的URL username.users.example.com:
bob.users.example.com
tim.users.example.com
scott.users.example.com
Run Code Online (Sandbox Code Playgroud)
所有*.users.example.com请求都应该转到特定的控制器/操作.我该如何指定routes.rb?
所有其他请求www.example.com转到我routes.rb文件中的正常路由列表.
更新:我观看有关子域的 railscast,它显示了下面的代码,这似乎正是我需要的(更改控制器和子域):
match '', to: 'my_controller#show', constraints: {subdomain: /.+\.users/}
Run Code Online (Sandbox Code Playgroud)
问题是它只匹配根URL.我需要这个以匹配每个可能的URL与*.users子域.显然我会把它放在我的routes.rb文件的顶部.但是,我如何指定一个包罗万象的路线?简单'*'吗?还是'/*'?
我想,你只需要做以下事情:
创建一个类Subdomain中lib:
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.host.include?('.users')
end
end
Run Code Online (Sandbox Code Playgroud)
在你的routes:
constraints Subdomain do
match '', to: 'my_controller#show'
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3872 次 |
| 最近记录: |