2013-12-17 126 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