Ruby on rails 视图和控制器的Rails助手?

Ruby on rails 视图和控制器的Rails助手?,ruby-on-rails,layout,scope,helpers,controllers,Ruby On Rails,Layout,Scope,Helpers,Controllers,我知道有一些方法可以让管制员使用助手,但这通常是不好的形式。应如何重新处理以下内容以避免这种情况 我有一个名为“全名”的联系人助手,它结合了联系人的名字和姓氏 称为subheader的局部布局在应用程序布局中呈现,并包含以下代码: <section id="subheader"><%= @subheader %></section> 控制器设置@subheader的值 问题是我经常在@subheader中使用“全名”。但这意味着从控制器访问帮助器。这个全

我知道有一些方法可以让管制员使用助手,但这通常是不好的形式。应如何重新处理以下内容以避免这种情况

我有一个名为“全名”的联系人助手,它结合了联系人的名字和姓氏

称为subheader的局部布局在应用程序布局中呈现,并包含以下代码:

<section id="subheader"><%= @subheader %></section>

控制器设置@subheader的值


问题是我经常在@subheader中使用“全名”。但这意味着从控制器访问帮助器。这个全名方法应该驻留在其他地方吗?

对于类似全名的东西,我通常只在模型本身上定义一个方法


如果fullname方法进行了某种类型的HTML格式化,那么我会将这些部分保存在助手中。

使用类似fullname的内容,我通常只在模型本身上定义一个方法


如果全名方法使用了某种类型的HTML格式,那么我会将这些部分保存在助手中。

由于您问题的标题可能会吸引观众寻找不同的答案,我将回答“我可以在控制器中使用rails助手吗?”?这有合法的用途,所以下面是最干净的方法:

在helpers文件中,将要在模型中访问的代码包装如下:

module HelperModuleName
  [helper code here]
end
仅包装需要在控制器中使用的代码(而不是使用
包含ApplicationHelper
包含所有帮助程序)是一个好主意,因为它减少了方法名称冲突的可能性,并迫使您更加慎重地选择在控制器中使用帮助程序

现在,将模块包括在您的应用程序_controller.rb中:

class ApplicationController < ActionController::Base
  protect_from_forgery
  include HelperModuleName
end
class ApplicationController
由于您问题的标题可能会吸引寻求不同答案的观众,因此我将回答“我可以在控制器中使用rails助手吗?”?这有合法的用途,所以下面是最干净的方法:

在helpers文件中,将要在模型中访问的代码包装如下:

module HelperModuleName
  [helper code here]
end
仅包装需要在控制器中使用的代码(而不是使用
包含ApplicationHelper
包含所有帮助程序)是一个好主意,因为它减少了方法名称冲突的可能性,并迫使您更加慎重地选择在控制器中使用帮助程序

现在,将模块包括在您的应用程序_controller.rb中:

class ApplicationController < ActionController::Base
  protect_from_forgery
  include HelperModuleName
end
class ApplicationController