Генерация заголовков страниц по пути в Rails - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь автоматически генерировать заголовки страниц по пути, и в настоящее время у меня есть это в моем application_helper. Метод работает, но есть ли более простой способ написать это?

def page_headings
  if current_page? about_path
    "about"
  elsif
    current_page? members_path
      "members"
  elsif
    current_page? sponsors_path
      "sponsors"
  elsif
    current_page? events_path
      "events"
  elsif
    current_page? membership_path
      "join us"
  elsif
    current_page? womens_path
      "women's page"
  elsif
    current_page? new_session_path
      "log in"
  elsif
    current_page? new_user_path
      "register"
  end
end

Затем, в своей части, я добавляю это:

<%= page_headings.upcase %>

1 Ответ

0 голосов
/ 12 марта 2019

Более компактный способ был бы с оператором case:

def current_path
  request.env['PATH_INFO']
end

def page_headings
  case current_path
  when about_path then "about"
  when members_path then "members"
  when sponsors_path then "sponsors"
  when events_path then "events"
  when membership_path then "join us"
  when womens_path then "women's page"
  when new_session_path then "log in"
  when new_user_path then "register"
  else
    puts "PAGE TITLE MISSING" if Rails.env.development?
    "My App Name"
  end
end

Однако в Rails для этого обычно используется шаблон, который рассматривает заголовок как часть слоя представления и использует provide и yield от ваших взглядов, подобных этому:

# app/layouts/application.html.erb
<title><%= yield(:title) + ' | ' if content_for?(:title) %>My App</title>

# app/views/about/index.html.erb
<% provide(:title, "About") %>
<h1>About</h1>

# app/views/sponsors/index.html.erb
<% provide(:title, "Sponsored by #{@sponsor.name}") %>
<h1>Sponsored by <%= @sponsor.name %></h1>

Преимущество утверждения case заключается в том, что все в одном месте легко хранить, но недостатком является то, что он далеко от того места, где вы на самом деле определяете, что такое страница.выглядит и может потенциально использовать содержимое из переменных экземпляра в заголовке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...