Rails在多个视图和控制器之间保存数据

时间:2013-09-12 13:25:10

标签: ruby-on-rails

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

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

1 个答案:

答案 0 :(得分:3)

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

resources :universes do
   resources :planets
   resources :spaceships
end

您网页的网址如下所示:

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

然后,您始终可以使用Universe ID,并且可以在ApplicationController中使用before_filter来调用在执行任何操作之前加载Universe的函数,这样您就可以在没有任何工作的情况下使用@universe。

当然,您仍然需要将Universe添加到链接中,但也可以通过创建辅助方法来自动化,这些方法使用您始终存在的@universe对象。 为这些资源路由创建的默认帮助程序类似于edit_universe_planet_path(@universe, planet.id)