Action Controller Helpers
The Rails
框架提供了大量的助手方法,用于处理资产、日期、表单、数字和模型对象等。这些助手方法默认情况下对所有模板可用。
除了使用提供的标准模板助手方法外,还强烈建议创建自定义助手方法来提取复杂的逻辑或可重复使用的功能。默认情况下,每个控制器都会包含所有助手方法。这些助手方法只能通过 #helpers
在控制器中访问。
在以前版本的 Rails
中,控制器会包含一个与控制器名称匹配的助手方法,例如,MyController
会自动包含 MyHelper
。您可以使用以下方法恢复旧的行为
# config/application.rb
class Application < Rails::Application
config.action_controller.include_all_helpers = false
end
可以使用 ActionController::Base
或任何从它继承的控制器的 helper
类方法指定额外的助手方法。
来自 Time
类的 to_s
方法可以包装在一个助手方法中,以在 Time
对象为空时显示自定义消息。
module FormattedTimeHelper
def format_time(time, format=:long, blank_message=" ")
time.blank? ? blank_message : time.to_fs(format)
end
end
现在可以使用 helper
类方法将 FormattedTimeHelper 包含在控制器中。
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() 链接
提供一个代理,用于从视图外部访问助手方法。
来源: 显示 | 在 GitHub 上
# File actionpack/lib/action_controller/metal/helpers.rb, line 125 def helpers @_helper_proxy ||= view_context end