Action Controller Helpers
Rails
框架提供許多協助處理資產、日期、表單、數字和模型物件的 Helper,種類繁多。這些 Helper 預設可供所有範本使用。
除了使用提供的標準範本 Helper 外,強烈建議建立自訂 Helper 來萃取出複雜的邏輯或可重複使用的功能。預設情況下,每個控制器都會包含所有 Helper。這些 Helper 只可透過 #helpers
在控制器中存取
在 Rails
的先前版本中,控制器會包含與控制器名稱相符的 Helper,例如:MyController
會自動包含 MyHelper
。您可以使用以下方式回復為舊有行為
# config/application.rb
class Application < Rails::Application
config.action_controller.include_all_helpers = false
end
可以使用 ActionController::Base
或繼承自該類別的任何控制器的 helper
類別方法指定其他 Helper。
來自 Time
類別的 to_s
方法,可包覆在一個 Helper 方法中,以在 Time
物件為空時顯示自訂訊息
module FormattedTimeHelper
def format_time(time, format=:long, blank_message=" ")
time.blank? ? blank_message : time.to_fs(format)
end
end
FormattedTimeHelper 現在可以使用 helper
類別方法包含在控制器中
class EventsController < ActionController::Base
helper FormattedTimeHelper
def index
@events = Event.all
end
end
接著,在由 EventsController
呈現的任何檢視中,都可以呼叫 format_time
方法
<% @events.each do |event| -%>
<p>
<%= format_time(event.time, :short, "N/A") %> | <%= event.name %>
</p>
<% end -%>
最後,假設我們有兩個事件實例,一個有時間,一個沒有時間,輸出結果可能如下所示
23 Aug 11:30 | Carolina Railhawks Soccer Match
N/A | Carolina Railhawks Training Workshop
命名空間
方法
- H
包含模組
屬性
[RW] | helpers_path |
執行個體公開方法
helpers() 連結
提供一個代理程式以便從檢視外存取 Helper 方法。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/metal/helpers.rb, line 125 def helpers @_helper_proxy ||= view_context end