试图找出Rails路由中的嵌套作用域

时间:2012-08-30 22:09:21

标签: ruby-on-rails-3 rails-routing

我有一个网站,我正在制作如下网址(供用户查看信息):

/:state/:data_type/:category/:subcategory/:item_id

data_type是“目录”,“文章”或“文档”之一。我们的想法是根据类别和子类别存储每个州的信息,并且可以这样查看。

任何特定的部分都是有效的路径。例如:

/ IN - 显示印第安纳州的主页(控制器region_home,动作索引)

/ IN /目录 - 印第安纳州(控制器region_categories)的类别和子类别列表

/ IN /目录/学校 - 印第安纳州“学校”类别下的子类别列表(控制器是region_subcategories)

/ IN /目录/学校/小学 - 印第安纳州的小学名单(控制器是region_directory,行动指数)

/ IN /目录/学校/小学/ 10-meridian-street - 深入到特定学校(控制器是region_directory,行动显示)

这主要是为了显示信息。我已经为所有地区,类别,子类别等创建了“slu”。这部分有效。

我实际上可以让它像这样工作:

match ':region_slug/directory(/:category_slug(/:subcategory_slug(/:directory_entry_id)))' => 'region_directory#index', :as => :region_directory

问题是每个请求都转到同一个控制器/操作,然后必须分派请求。

我可以把它分成几块:

match ':region_slug' => 'region_home#index'
match ':region_slug/directory' => 'region_categories#index'
match ':region_slug/directory/:category_slug' => 'region_subcategories#index'
match ':region_slug/directory/:category_slug/:subcategory_slug' => 'region_directory#index'
match ':region_slug/directory/:category_slug/:subcategory_slug/:directory_entry_id' => 'region_directory#show'

但是这打破了DRY,我不得不重复这篇文章等等。我无法弄清楚如何用范围来做这件事。有什么想法吗?

0 个答案:

没有答案