2014-11-12 2 views
0

Мои Rails4 приложение имеет несколько маршрутовО Rails маршрутах

get '/mem(/:id)(/:action)(.format)' ,:controller=>'sns_mem',id: /\d+/ 
get '/group(/:id)(/:action)(.format)' ,:controller=>'sns_group',id: /\d+/ 
get '/article(/:id)(/:action)(.format)' ,:controller=>'sns_article',id: /\d+/ 
get '/photo(/:id)(/:action)(.format)' ,:controller=>'sns_photo',id: /\d+/ 

Как вы можете видеть, эти маршруты похожи, так что я хочу знать, как объединить эти маршруты к одному?

+0

Вы правы, я имею в виду, что этот формат маршрута похож, поэтому я хочу знать, может ли RegExp достичь этого? – HXH

+0

http://edgeguides.rubyonrails.org/routing.html –

+0

Но я не нашел ответа, чтобы объединить эти маршруты – HXH

ответ

1
['mem', 'group', 'article', 'photo'].each do |r| 
    get "/#{r}(/:id)(/:action)(.format)" ,:controller=>"sns_#{r}",id: /\d+/ 
end 

Никогда не пробовал с циклами в файле route.rb, но должен работать. Это не ОДИН маршрут, он создаст один маршрут для каждого элемента массива, но по крайней мере вы избежите опечаток. Более того, регулярное выражение, как правило, медленнее.

Смежные вопросы