1

我有一个带有 Item 模型和 Fixer 模型的应用程序。每个 Item 都属于一个 Fixer,而 Fixer 可以拥有多个项目。我想创建一个“日志”页面,其中特定的修复程序可以更新与它们关联的特定项目的信息。理想情况下是这样的

www.myappname.com/fixers/<fixer_id>/log/<item_id>

我对 Rails 还很陌生,所以我不确定如何找出这个路由/控制器。我查看了有关路由的 Rails 指南部分,唯一看起来与我想要的相似的是嵌套模型,但理想情况下我不想嵌套模型,因为虽然项目在技术上可能是“belong_to”修复程序,但这并不是真的现实世界中的情况(修复程序只是关联,belong_to 是最明智的方式),并且没有其他关系需要嵌套/有意义。更重要的是,我并不真正了解嵌套模型的含义或作用,并且我尽量避免实施我不完全理解的解决方案。

如果嵌套是要走的路,请告诉我,否则,我该如何路由呢?我在我的 routes.rb 文件中试过这个:

match 'fixers/:id/log/:id' => 'fixers#log'

并创建了log.html.erb,但我不知道如何在控制器中选择它的参数(它怎么知道我选择的是哪个“:id”?有没有更好的方法呢? ?

谢谢!

4

2 回答 2

3

由于它们相互关联,您可以尝试使用嵌套路由:

resources :fixers do
  resources :log
end
于 2012-10-27T01:03:41.320 回答
1

嵌套资源用于一对多关系,您可以在 Rails 路由指南中阅读。

您可以以任何您认为合适的方式命名参数,它不必是:id. 例如:

match 'fixers/:id/log/:item_id' => 'fixers#log'

在你的控制器中:

@fixer = Fixer.find(params[:id])
@item = Item.find(params[:item_id])
于 2012-10-27T01:14:54.570 回答