我无法按照导轨指南中的定义在routes.rb
中填充网址。
get 'photos/*other', to: 'photos#unknown'
我在routes.rb
文件中有这行代码:
constraints(Codeopenhub) do
get '/', to: 'codeopenhub#index'
end
截至目前,此代码将捕获网址code.openhub.net
,但我需要抓住看起来像code.openhub.net/other_stuff
的网址。这是我尝试过的:
constraints(Codeopenhub) do
get '/*', to: 'codeopenhub#index'
end
这不起作用.....它会抛出404.我接着尝试了这个:
constraints(Codeopenhub) do
match '/*', to: 'codeopenhub#index', via: [:get]
end
这也不起作用。我有一个包含此代码的lib/constraints/codeopenhub.rb
文件:
class Codeopenhub
def self.matches?(request)
request.subdomain.include?(ENV['CODE_SUBDOMAIN'])
end
end
基本上这就是说,如果网址包含子域名code
,那么它应该转到codeopenhub#index
。我很困惑为什么我的路线不匹配。为什么code.openhub.net/foo
与*
不匹配的网址?
答案 0 :(得分:0)
根据指南,我相信你需要在星上附上一个名字,因为匹配的值会被放入参数中。试试这条路线:
get '*foo', to: 'codeopenhub#index'
然后,您可以将code.openhub.net/taco
路由到codeopenhub#index
,例如值params[:foo] = 'taco'
。
答案 1 :(得分:0)
你想要的是一个可选参数。每当我需要它时,我将param名称放在括号内,所以我会这样写:
constraints(Codeopenhub) do
get '/(:other)', to: 'codeopenhub#index'
end
请参阅文档中的更多信息:http://guides.rubyonrails.org/routing.html#bound-parameters