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