2017-04-14 6 views
1

レールガイドに定義されているように私のroutes.rbのURLをグロブするのに問題があります。私のURLのルートグロビングが失敗するのはなぜですか?

get 'photos/*other', to: 'photos#unknown' 

私は私のroutes.rbファイル内のコード行をしている:今、このコードは、URL code.openhub.netをキャッチします右のよう

constraints(Codeopenhub) do 
    get '/', to: 'codeopenhub#index' 
end 

が、私はこのcode.openhub.net/other_stuffように見えるURLをキャッチする必要があります。ここで私が試したものです:これは動作しません

constraints(Codeopenhub) do 
    get '/*', to: 'codeopenhub#index' 
end 

.....それは私がこれを試してみました404がスローされます。

constraints(Codeopenhub) do 
    match '/*', to: 'codeopenhub#index', via: [:get] 
end 

これはどちらか動作しませんでした。

class Codeopenhub 
    def self.matches?(request) 
    request.subdomain.include?(ENV['CODE_SUBDOMAIN']) 
    end 
end 

は基本的に、これはURLがサブドメインcodeを持っているならば、それはcodeopenhub#indexに行くべきであると言っている:私はこのコードが含まれているlib/constraints/codeopenhub.rbファイルを持っています。私のルートがなぜ一致しないのか混乱しています。なぜ、URLがcode.openhub.net/fooでない場合、*と一致しませんか?

答えて

0

私は、ガイドによれば、星に付けられた名前が必要であると信じています。これは、一致する値がパラメータに入れられるからです。このルートを試してみてください:

get '*foo', to: 'codeopenhub#index' 

あなたは値params[:foo] = 'taco'codeopenhub#indexへのルートcode.openhub.net/tacoそしてだろう、例えば。

0

オプションパラメータは任意です。私はそれを必要とするたびに私は、括弧内のparamの名前を入れたので、私はこのようにそれを記述します。http://guides.rubyonrails.org/routing.html#bound-parameters

constraints(Codeopenhub) do 
    get '/(:other)', to: 'codeopenhub#index' 
end 

は、ドキュメントでより多くの情報を参照してください。

関連する問題