2016-02-05 120 views
1

我正在使用命名空間在rails中製作api。在我的系統中,我需要在正則表達式中制定一個可選規則,即我的nginx將以不同的方式運行。正則表達式在rails 4中的命名空間路由

我有這樣的routes.rb

namespace 'api', constraints: { format: 'json' } do 
    namespace :v1 do 
    # .... 
    end 
end 

請求例如:/api/v1/posts/new

我需要一個可選的查詢中routes.rb/_sh/開始。

例子:

/api/v1/posts/new 
/_sh/api/v1/posts/new => # Same response, controller and action 

我怎樣才能做到這一點?

我在文檔中找不到任何東西。

感謝您的支持。

回答

0

範圍_sh可以用括號來表示類似的東西。路徑部分_sh/成爲可選項。

scope '(_sh)' do 
    namespace 'api', constraints: { format: 'json' } do 
    namespace :v1 do 
     # .... 
    end 
    end 
end 

可以使用:constraints選項執行的格式爲可選段:

scope '(:optional_prefix)', constraints: {optional_prefix: /_sh/} do 
    namespace 'api', constraints: { format: 'json' } do 
    namespace :v1 do 
     # .... 
    end 
    end 
end 
0

您可以使用範圍爲這個,我不知道這是回答你的問題蒲式耳我做了這樣

scope ":name_of_param", name_of_param: /regex_to_match/ do 
    namespace 'api' 
    namespace 'v1' 
    end 
    end 
end