【发布时间】:2011-08-20 13:46:07
【问题描述】:
我正在尝试创建一个简单的家庭团聚网站,其中包含:“帖子”、“家庭”、“孩子”和“图片”。理想情况下,我希望以这种方式构建路线/关系:
resources :posts do
resources :pictures
end
resources :fams do
resources :pictures
resources :kids do
resources :pictures
end
end
在模型中,我在fams 和kids 之间设置了必要的“belongs_to”和“has_many”关系。 Fams、kids、posts都用"has_many :pictures, :as => :imageable定义,而图片定义为:belongs_to :imageable, :polymorphic => true
当尝试在pictures 视图中执行link_to "Edit" 和link_to "Destroy" 时,我遇到了各种_path 问题。 polymoric_path 在两个级别上都可以正常工作,即posts-pictures 和fams-pictures,但它无法处理fams-kids-pictures 的三个级别的情况。我猜它不是为处理picture 对象上方的两个级别的“imageable”对象而设计的。另一个问题是,在一个实例中,pictures 控制器必须处理“一层”资源嵌套情况,而在另一种情况下,它必须处理“两层”情况。不知道如何处理。
根据 Ruby Guides 的指示,我尝试过的一件事是不要将资源嵌套深度超过一层。我的结构是这样的:
resources :posts do
resources :pictures
end
resources :fams do
resources :pictures
resources :kids
end
resources :kids do
resources :pictures
end
这导致了另一组路径问题,因为不再保留亲子关系。我也无法让 polymorphic_path 在所有不同的picture 视图中正常运行。
所以这是我的主要问题:有谁知道 Rails 3 示例/教程,其中嵌套资源、属于/has_many 和多态关系都放在一起,尤其是在它不仅仅是简单的两级的地方大多数例子显示的关系? (我对 Rails 还很陌生,鉴于我缺乏 Rails 历史经验,我在这些领域发现的 Rails 2 示例令人困惑。)
或者谁能告诉我如何为我的picture 视图构建link_to EDIT 和link_to DELETE 语句,以及我的create、update 和destroy 方法的redirect-to 语句在我的pictures 控制器中?
谢谢!
【问题讨论】:
标签: ruby-on-rails-3 polymorphic-associations belongs-to nested-routes