Action Controller Helpers¶ ↑
The Rails framework 提供了大量用于处理资源、日期、表单、数字和模型对象等的助手。默认情况下,所有模板都可以使用这些助手。
除了使用标准模板助手外,强烈建议创建自定义助手来提取复杂的逻辑或可重用的功能。默认情况下,每个控制器将包含所有助手。这些助手只能通过 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
包含的模块
Attributes
| [RW] | helpers_path |
实例公共方法
helpers() 链接
提供一个代理,用于在视图外部访问助手方法。
Source: 显示 | 在 GitHub 上
# File actionpack/lib/action_controller/metal/helpers.rb, line 125 def helpers @_helper_proxy ||= view_context end