所以我有一个资源类型Post,它可以与Category类型的资源相关联。我的routes.rb文件中包含以下内容:
resources "code", :controller => :posts, :as => :code
resources "sports", :controller => :posts, :as => :sports
resources "gaming", :controller => :posts, :as => :gaming
resources "personal", :controller => :posts, :as => :personal
因此,这通过友好的URL(例如http://host.domain/sports)获得了访问特定类别的预期效果,并且将收集所有具有体育类别的帖子。但是,我并不完全确定如何将这些资源作为特定于各个类别的范围。我想我可以做类似的事情:
match ":category_name", :to => posts#index
但这是有问题的,因为它会抓住一切。
所以我总结一下,我想要的是保持友好的URL(我指定的确切结构)来访问具有特定类别的帖子。想法?
答案 0 :(得分:1)
您拥有多个资源,每个网址都应该可以访问。四种资源属于同一类型,可以确定为帖子。可以通过一个控制器提供它们的功能,并且很容易检测当前路径,然后解析并添加活动记录数范围。
但让我们看起来更深一点。您具有相同类型的数据,可能具有相同的属性,因此常见模式为“单表继承”,它等于一个表和更多模型,“类型”列与模型不同。
控制器提供用户交互和数据流之间的接口,因此我建议您为每个资源使用独立控制器。这是一种普遍的做法。如果您不想键入更多典型代码,请使用Resourceful Controller插件。
然后你可以得到结构:
#routes
resources :code, sports, :gaming, :personal
# STI parent and children models
model Post < ActiveRecord::Base
model Sport < Post
...