Что является надлежащим способом установить название страницы в направляющих 3. В настоящее время я делаю следующее:
app/views/layouts/application.html:
<head>
<title><%= render_title %></title>
<%= csrf_meta_tag %>
app/helpers/application_helper.rb:
def render_title
return @title if defined?(@title)
"Generic Page Title"
end
app/controllers/some_controller.rb:
def show
@title = "some custom page title"
end
Есть ли другой/лучше способ сделать вышеупомянутое?
вы можете стать простым помощником:
def title(page_title)
content_for :title, page_title.to_s
end
используйте его в своем макете:
<title><%= yield(:title) %></title>
затем вызовите его из своих шаблонов:
<% title "Your custom title" %>
надеюсь, что это поможет;)
@akfalcon - Я использую аналогичную стратегию, но без помощника.. Я просто устанавливаю @title по умолчанию в контроллере приложений, а затем использую,<%=@title%> в моем макете. Если я хочу переопределить заголовок, я устанавливаю его снова в действии контроллера, как и вы. Никакой магии не задействовано, но она работает просто отлично. Я делаю то же самое для мета-описания и ключевых слов.
На самом деле я думаю о перемещении его в базу данных, чтобы администратор мог изменить заголовки и т. Д. Без необходимости обновлять код Rails. Можно создать модель PageTitle с содержимым, действием и контроллером. Затем создайте помощник, который найдет PageTitle для контроллера/действия, которое вы в настоящее время отображаете (используя переменные controller_name и action_name). Если совпадение не найдено, верните значение по умолчанию.
@apeacox - есть ли польза от установки заголовка в шаблоне? Я думаю, что было бы лучше поместить его в контроллер, так как название напрямую относится к вызываемой акции.