0

我知道有办法让控制器可以使用助手,但这通常是不好的形式。应该如何重新设计以下内容以避免这种情况?

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

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

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

控制器设置@subheader 的值。

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

4

2 回答 2

2

使用全名之类的东西,我通常只在模型本身上定义一个方法。

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

于 2010-12-15T17:59:19.577 回答
1

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

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

module HelperModuleName
  [helper code here]
end

仅包装您需要在控制器中使用的代码(而不是包括所有使用 的助手include ApplicationHelper)是一个好主意,因为它减少了方法名称冲突的可能性,并迫使您更加慎重地选择在控制器中使用助手。

现在将该模块包含在您的 application_controller.rb 中:

class ApplicationController < ActionController::Base
  protect_from_forgery
  include HelperModuleName
end
于 2011-10-17T20:53:11.503 回答