Ruby on rails 使用rails 3中的前端模块来干燥我的代码

Ruby on rails 使用rails 3中的前端模块来干燥我的代码,ruby-on-rails,dry,Ruby On Rails,Dry,我有一个横幅显示用户信息,我使用render:partial命令在整个站点中重用这些信息。但是控制器中的操作方法每次都需要实例化@user 这只是一个例子,我还有很多事情要做,所以我不能使用会话变量 但是,如何干燥我的代码,避免在多个地方初始化@user,并使前端模块和控制器分离 我希望每个页面(即每个操作)都是前端模块的集合,具有自己的控制器方法您是否显示当前用户?您可以使用authlogic(或者您自己的实现,如果您已经有了那么多),您只需在应用程序控制器中创建一个当前用户函数即可。这将适用

我有一个横幅显示用户信息,我使用render:partial命令在整个站点中重用这些信息。但是控制器中的操作方法每次都需要实例化@user

这只是一个例子,我还有很多事情要做,所以我不能使用会话变量

但是,如何干燥我的代码,避免在多个地方初始化@user,并使前端模块和控制器分离


我希望每个页面(即每个操作)都是前端模块的集合,具有自己的控制器方法

您是否显示当前用户?您可以使用authlogic(或者您自己的实现,如果您已经有了那么多),您只需在应用程序控制器中创建一个当前用户函数即可。这将适用于应用程序中的所有控制器和视图。您可以创建一个前端控制器,其中带有加载所需内容的前置过滤器。然后使每个控制器从中继承,而不是从ApplicationController中继承。这将每次加载每个前端模块所需的所有变量,因为我不能使用:仅在FrontEndController中的before filter中使用,因为该操作不适用于此控制器,我可以有两个操作:索引一个需要前端模块,另一个没有您尝试过我建议的当前用户方法吗?@腐蚀:我的情况比访问一个变量更复杂,我有多个前端模块访问多个模型集合,您的解决方案可以工作,但可以让我使用一个加载良好的应用程序控制器。我打算用include_module(name)替换render:partial=>name,并使include_module成为应用程序控制器的一个超类,它基本上发送(name),我的模块是这个控制器的受保护方法。我可以在这些方法中向render调用添加:locals