我有一个网站,我正在制作如下网址(供用户查看信息):
/: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,我不得不重复这篇文章等等。我无法弄清楚如何用范围来做这件事。有什么想法吗?