module ActionController::Helpers
Action Controller Helpers
Фреймворк Rails предоставляет множество вспомогательных методов для работы с ресурсами, датами, формами, числами и объектами моделей. По умолчанию эти методы доступны во всех шаблонах.
Помимо использования стандартных вспомогательных методов шаблонов, настоятельно рекомендуется создавать собственные вспомогательные методы для вынесения сложной логики или многократно используемых функций. По умолчанию каждый контроллер подключает все вспомогательные методы. В контроллере эти методы доступны только через helpers
В предыдущих версиях Rails контроллер подключал вспомогательный модуль, имя которого совпадало с именем контроллера, например, MyController автоматически подключал MyHelper. Вернуть прежнее поведение можно следующим образом:
# config/application.rb class Application < Rails::Application config.action_controller.include_all_helpers = false end
Дополнительные вспомогательные модули можно указать с помощью метода класса helper в ActionController::Base или любом контроллере, наследующем его.
Метод to_s класса Time можно обернуть во вспомогательный метод, который отображает пользовательское сообщение, если объект 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
Атрибуты
Публичные методы экземпляра
# File actionpack/lib/action_controller/metal/helpers.rb, line 125 def helpers @_helper_proxy ||= view_context end
Предоставляет прокси для доступа к вспомогательным методам извне представления.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.