Rails меняет длинную инструкцию if / else - PullRequest
0 голосов
/ 24 октября 2018

Так что я пытаюсь вставить динамические теги привязки для доступности.Основываясь на URL-адресе, якорный тег размещается вверху под телом.В итоге я сделал что-то вроде этого в представлении:

<body>
 <div class="skip">
  <%= yield :upper_body%>
  <%= anchor_update %>
  <a href="/"> Navigation - Home </a>
 </div>
</body>

В моем методе anchor_update есть следующий беспорядок if / else, который я бы хотел убрать:

def anchor_update
 url = request.original_url
 if url.include?('services')
   content_tag(:a, "Skip to Services Content", :href => '#services')
 elsif url.include?('about')
   content_tag(:a, "Skip to About", :href => '#about-content')
 elsif url.include?('core-values')
   content_tag(:a, "Skip to Core Values Content", :href => '#core-values')
 elsif url.include?('condition')
  content_tag(:a, "Skip to Condition Content", :href => '#condition-content')
 elsif url.include?('top')
  content_tag(:a, "Skip to Top Content", :href => '#top-content')
 else
   '¯\_(ツ)_/¯'
end
end

EDIT:Первоначально я понятия не имел, как безопасно избежать заявления.возвращение работает.Но это грязное решение с if / elsif.Поэтому я пытаюсь выяснить, есть ли более чистое решение.

Дополнительное РЕДАКТИРОВАНИЕ: В настоящее время мы используем CMS, которая позволяет пользователям создавать новые страницы, которые будут использовать шаблон, который мы разработали для них, который называется two_pane.и их около 20, таким образом, метод, который пытается попасть на каждую страницу.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Случайный ответ - хорошее начало.Но вы можете просто использовать link_to вместо content_tag для очистки всего этого дублирования.

link_to("Skip to Services Content",'#services')

link_to("Skip to About", '#about-content')

и т. Д.

0 голосов
/ 24 октября 2018

Чтобы избавиться от длинного оператора if-elseif-else, вы можете использовать case с регулярным выражением:

def anchor_update
  url = request.original_url
  case url
  when /services/
    content_tag(:a, "Skip to Services Content", href: '#services')
  when /about/
    content_tag(:a, "Skip to About", href: '#about-content')
  when /core-values/
    content_tag(:a, "Skip to Core Values Content", href: '#core-values')
  when /condition/
    content_tag(:a, "Skip to Condition Content", href: '#condition-content')
  when /top/
    content_tag(:a, "Skip to Top Content", href: '#top-content')
  else
    '¯\_(ツ)_/¯'
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...