Spec-Zone.ru › Ruby on Rails 6.1

модуль ActionController::Helpers

Включенные модули:
AbstractController::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_s(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 128
def helpers
  @_helper_proxy ||= view_context
end

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

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

Spec-Zone.ru

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