2013-12-17 45 views
3

有這樣的網址,在我的應用程序:俄羅斯符號鏈接和路由約束

local/alphabetical/service/Ю 
local/alphabetical/service/Б 
local/alphabetical/service/Ж 

我想只允許符號Ю,Б,Ж在url

的routes.rb

get "/alphabetical/:type/:letter" => "alpha#index",  
    :constraints => { :type => /good|service/, :letter => /[ЮБЖ]/ }, 
    :as => "alpha" 

http://local/alphabetical/service/Ю給我一個錯誤:

Routing Error 
No route matches [GET] "/alphabetical/service/%D0%AE" 

如何在routes.rb文件中設置約束條件以僅允許符號?,?,?符號?

謝謝。

回答

2

謝謝@phoet的回覆,它非常有用。
會有人感興趣...

對於我來說,解決辦法是:

產品型號:

class Product < ActiveRecord::Base 
    LETTERS = %w(А Б В Г Ґ Д Е Є Ж З І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я) 
end 

的routes.rb

get "/alphabetical/:type/:letter" => "alpha#index",  
     :constraints => lambda { |req| req.params[:type] =~ /good|service/ and req.params[:letter] =~ /[#{Product::LETTERS.join}]/i }, 
     :as => "alpha" 
2

了類似的問題,爲了舉例而發佈。

resources :listings, path: "объявления" do 
    get ":kind(/:category(/:subcategory(/:state(/:city))))", 
     constraints: lambda { |req| %w(работа недвижимость услуги продажи).include? req.params[:kind] }, 
     to: "listings#search", 
     as: "search", 
     on: :collection 
    end