0

在我的域中,用户选择要编辑的 Universe,然后可以查看/编辑/销毁等与他们选择的 Universe 关联的模型。基本上,整个网站取决于您当前正在查看的宇宙。

我刚刚在参数中传递了哪个宇宙,但这很快就变得难以处理。是否有一种 Rails 标准方法来跟踪用户选择的最后一个 Universe 是什么?我应该将这些信息存储在某种 cookie 中吗?我应该制作某种奇怪的单例模型来保存数据吗?有没有办法使用 Session (就像你跟踪哪个用户登录一样)?

4

1 回答 1

3

您的路线是如何设置的?对任何此类依赖项使用嵌套路由:

resources :universes do
   resources :planets
   resources :spaceships
end

然后,您页面的 url 如下所示:

www.somedomain.com/:universe_id/planets/:planet_id/edit?param=1&param2=2

然后,您始终可以使用 Universe id,并且可以在 ApplicationController 中使用 before_filter 来调用在任何操作之前加载 Universe 的函数,因此您始终可以使用 @universe 而无需任何工作。

当然,您仍然必须将宇宙添加到您的链接中,但这也可以通过创建利用您始终存在的 @universe 对象的辅助方法来自动化。为这些资源路由创建的默认助手看起来像edit_universe_planet_path(@universe, planet.id)

于 2013-09-12T13:39:36.160 回答