Spec-Zone.ru › Ruby on Rails 5.1

модуль ActionController::Helpers

Включенные модули:
AbstractController::Helpers

Фреймворк Rails предоставляет множество вспомогательных методов для работы с активами, датами, формами, числами и объектами моделей, и это лишь некоторые из них. Эти вспомогательные методы доступны по умолчанию для всех шаблонов.

Помимо использования стандартных вспомогательных методов шаблонов, настоятельно рекомендуется создавать пользовательские вспомогательные методы для извлечения сложной логики или многоразового функционала. По умолчанию каждый контроллер будет включать все вспомогательные методы. Эти вспомогательные методы доступны в контроллере только через #helpers

В предыдущих версиях Rails контроллер включал вспомогательный метод, имя которого совпадало с именем контроллера, например, MyController автоматически включал MyHelper. Чтобы вернуть старое поведение, установите config.action_controller.include_all_helpers в false.

Дополнительные вспомогательные методы можно указать, используя метод класса helper в ActionController::Base или в любом контроллере, унаследованном от него.

Метод to_s из класса Time можно обернуть в вспомогательный метод, чтобы отобразить пользовательское сообщение, если объект Time пустой:

module FormattedTimeHelper
  def format_time(time, format=:long, blank_message=" ")
    time.blank? ? blank_message : time.to_s(format)
  end
end

Теперь вспомогательный метод FormattedTimeHelper можно включить в контроллер, используя метод класса helper:

class EventsController < ActionController::Base
  helper FormattedTimeHelper
  def index
    @events = Event.all
  end
end

Затем в любом представлении, рендер которого выполняет EventController, можно вызвать метод 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 118
def helpers
  @_helper_proxy ||= view_context
end

Предоставляет прокси для доступа к вспомогательным методам извне представления.

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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