2010-12-15 148 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