модуль ActionController::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
Затем, в любом представлении, рендеренном 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 118 def helpers @_helper_proxy ||= view_context end
Предоставляет прокси для доступа к методам помощников извне представления.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.