Spec-Zone.ru › Ruby on Rails 8.1

module ActionController::Helpers

Подключённые модули:
AbstractController::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="&nbsp;")
    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

Атрибуты

helpers_path [RW]

Публичные методы экземпляра

helpers () Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API