Ruby on rails 从多个模型访问变量

Ruby on rails 从多个模型访问变量,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的Rails应用程序有六个不同的部分,它们都有自己的模型、视图和控制器 我正在尝试创建一个“仪表板”页面,用于访问每个部分的变量。例如,在我的一个控制器中,我有以下情况: if @retirementsavingsdiff < 0 @retiregrade = "pass" end if@retirementsavingsdiff

我的Rails应用程序有六个不同的部分,它们都有自己的模型、视图和控制器

我正在尝试创建一个“仪表板”页面,用于访问每个部分的变量。例如,在我的一个控制器中,我有以下情况:

if @retirementsavingsdiff < 0
  @retiregrade = "pass"
end
if@retirementsavingsdiff<0
@退休等级=“通过”
终止
但我似乎无法从其他视图/控制器访问此变量


我是否将仪表板逻辑放入应用程序\u controller.rb

帮助程序中定义的方法在所有视图中都自动可用

如果要将控制器内定义的方法转换为帮助器方法,也可以执行以下操作:

def my_method
  # code
end

 helper_method :my_method
更新:

这里有一个来自中国的例子

class ApplicationController
帮助程序中定义的方法可在所有视图中自动使用

如果要将控制器内定义的方法转换为帮助器方法,也可以执行以下操作:

def my_method
  # code
end

 helper_method :my_method
更新:

这里有一个来自中国的例子

class ApplicationController
使代码可重用的一个好方法是将其分离成模块。Rails 4包含了一个名为的东西,使这变得非常简单。下面是一篇带有的博客文章,下面是代码的示例:

#/app/controllers/concerns/retirement\u grade\u checker.rb
模块失效等级检查器
扩展ActiveSupport::关注点
def检查_退役_等级
@retirementsavingsdiff=参数[:retirementsavingsdiff]
如果@retirementsavingsdiff<0
@退休等级=“通过”
终止
终止
终止
#/app/controllers/retirement\u controller.rb
类RetirementController
使代码可重用的一个好方法是将其分离成模块。Rails 4包含了一个名为的东西,使这变得非常简单。下面是一篇带有的博客文章,下面是代码的示例:

#/app/controllers/concerns/retirement\u grade\u checker.rb
模块失效等级检查器
扩展ActiveSupport::关注点
def检查_退役_等级
@retirementsavingsdiff=参数[:retirementsavingsdiff]
如果@retirementsavingsdiff<0
@退休等级=“通过”
终止
终止
终止
#/app/controllers/retirement\u controller.rb
类RetirementController
我会避免使用视图帮助程序,而是创建一个包含所有逻辑的新类或模块。通过这样做,您可以在需要时重用该逻辑


为什么这样做而不是帮手?您可以轻松地测试它。

我将避免使用视图帮助程序,而是创建一个包含所有逻辑的新类或模块。通过这样做,您可以在需要时重用该逻辑



为什么这样做而不是帮手?您可以轻松地对其进行测试。

这些变量是在
控制器中定义的。不能将它们移动到
帮助文件中吗?是的,它们都在控制器中。是否可以在应用程序中访问帮助程序?您可以创建一个DashboardController,并在index方法中设置所有需要的变量。因此,我应该在DashboardController中的所有其他控制器中复制我的逻辑?这些变量是否在
控制器中定义。不能将它们移动到
帮助文件中吗?是的,它们都在控制器中。整个应用程序是否可以访问帮助程序?您可以创建一个DashboardController,并在index方法中设置所有需要的变量。因此,我应该在DashboardController中的所有其他控制器中复制我的逻辑?当我将helper_方法添加到控制器中时,会出现以下错误:语法错误,意外“:”,需要关键字\u end helper\u方法:抱歉,这是一个输入错误。请参阅更新的答案。它应该是
helper\u方法:我的\u方法
我认为@James Mason有一个更好的解决方案。当我将helper\u方法添加到我的控制器中时,我得到以下错误:语法错误,意外的“:”,期望关键字\u end helper\u方法:抱歉,这是一个打字错误。请参阅更新的答案。它应该是
helper\u方法:我的\u方法
我认为@James Mason有一个更好的解决方案来解决你的问题。因此,将我所有的逻辑,跨越所有六个控制器,移动到一个新的helper中,并在我所有的其他模型中共享?查看@James Mason的答案。他说了更多的细节。所以,把我所有的逻辑,在所有六个控制器中,移到一个新的助手中,在我所有的其他模型中共享?看看@James Mason的答案。他谈到了更多细节。我如何知道我创建的新模块是否可供其他控制器访问?我刚刚尝试了这种设计,得到了未初始化的常量FinanceController::RetirementGradeCheckerId您是否将模块粘贴在app/controllers/concerns中?是的。我把它存为什么重要吗?是“includeRetriementGradeChecker”抛出了这个错误,就像Rails中的任何其他类或模块一样。文件名需要与类名匹配才能自动加载。如何知道我创建的新模块是否可访问