我有一個自定義的label_tag
方法LabelTagHelper,但我只需要這個方法在我的新,創建,編輯和更新行動。如何爲一個特定的動作定義Rails Helper?
有沒有辦法只爲特定的動作定義這個幫手?像helper :label_tag, :only => [:new, :create, :update, :destroy]
?或者在before_filter中調用self.class.helper :label_tag
是安全的?
我有一個自定義的label_tag
方法LabelTagHelper,但我只需要這個方法在我的新,創建,編輯和更新行動。如何爲一個特定的動作定義Rails Helper?
有沒有辦法只爲特定的動作定義這個幫手?像helper :label_tag, :only => [:new, :create, :update, :destroy]
?或者在before_filter中調用self.class.helper :label_tag
是安全的?
rails幫助者應該只是格式化程序。把它看作只是用來裝飾你的表示層的函數(視圖)
所以有helpers爲:before_filter沒有任何意義。由於控制器的操作通常涉及一些服務器端處理。
因此,當你想要的時候打電話給你的助手。因此,不需要爲特定操作添加助手。正如我前面提到的助手和控制器/模型行動應該是相互排斥的
順便說一句,你能解釋一下你的要求,你爲什麼要限制你的助手
HTH
sameera
試試這個,
有這樣一個輔助方法(在我的情況下,我使用了一種名爲「ProjectsHelper」助手)
module ProjectsHelper
def label_tag *params
if controller.action_name == "index"
#user custom implementation
else
super
end
end
end
這是工作......希望這是你需要什麼,
歡呼
HTH
sameera
注:抱歉,沒有更新現有的答案。由於這是全新的方法,因此將其視爲一個單獨的答案
調用'超級'不能在模塊內工作,對不起:( – 2011-05-17 14:23:45
對不起,但我想你誤會了我。在我的** index **視圖中,我想使用內置的'label_tag',但對於其他操作,我想使用自己的幫助程序來覆蓋內置的'label_tag'。不,我不會重命名我的幫手。 ;) – 2011-05-12 09:23:24
啊...好了,現在我明白你的問題了......我也會嘗試一下。同時,如果你發現一個解決方案,請在這裏發佈對不起..:D – sameera207 2011-05-12 09:33:38