2010-12-15 105 views
0

我知道有一些方法可以帮助控制器使用助手,但这通常是不好的形式。应该如何重新设计以避免这种情况?视图和控制器的Rails助手?

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

的布局部分称为子报头被呈现在应用程序的布局,并包含以下代码:

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

该控制器设置@subheader的值。

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

回答

2

有了像fullname这样的东西,我通常只是在模型本身上定义一个方法。

如果全名方法做了某种类型的HTML格式化,那么我会将这些部分保留在帮助器中。

+0

嗯,是的。谢谢。 :-) – glortho 2010-12-15 18:25:30

1

由于问题的标题可能会吸引观众寻找不同的答案,因此我将回答“我可以在控制器中使用导轨助手”的问题吗?有合法用途这一点,所以这里是这样做的最彻底的方法:

在助手文件,包你想在一个模型来访问,像这样的代码:

module HelperModuleName 
    [helper code here] 
end 

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

现在包括在您application_controller.rb模块:

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    include HelperModuleName 
end