Направляющие 3 - Идеальный способ установить заголовок страниц

Что является надлежащим способом установить название страницы в направляющих 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

Есть ли другой/лучше способ сделать вышеупомянутое?

71
задан Mischa 8 January 2011 в 02:55
поделиться

2 ответа

вы можете стать простым помощником:

def title(page_title)
  content_for :title, page_title.to_s
end

используйте его в своем макете:

<title><%= yield(:title) %></title>

затем вызовите его из своих шаблонов:

<% title "Your custom title" %>

надеюсь, что это поможет;)

132
ответ дан 24 November 2019 в 12:50
поделиться

@akfalcon - Я использую аналогичную стратегию, но без помощника.. Я просто устанавливаю @title по умолчанию в контроллере приложений, а затем использую,<%=@title%> в моем макете. Если я хочу переопределить заголовок, я устанавливаю его снова в действии контроллера, как и вы. Никакой магии не задействовано, но она работает просто отлично. Я делаю то же самое для мета-описания и ключевых слов.

На самом деле я думаю о перемещении его в базу данных, чтобы администратор мог изменить заголовки и т. Д. Без необходимости обновлять код Rails. Можно создать модель PageTitle с содержимым, действием и контроллером. Затем создайте помощник, который найдет PageTitle для контроллера/действия, которое вы в настоящее время отображаете (используя переменные controller_name и action_name). Если совпадение не найдено, верните значение по умолчанию.

@apeacox - есть ли польза от установки заголовка в шаблоне? Я думаю, что было бы лучше поместить его в контроллер, так как название напрямую относится к вызываемой акции.

2
ответ дан 24 November 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: