В Rails применяются теги привязки в зависимости от URL - PullRequest
0 голосов
/ 24 сентября 2018

Я использую CMS, которая шаблонизирует кучу веб-сайтов, и мне нужно применить пропускную навигацию к этим страницам.

Итак, в шаблоне по умолчанию, который они рисуют, у меня есть следующее:

<a href="#some-content">Skip to Some Content</a>
<a href="#other-content">Skip to Other Content</a>
<a href="#yes-content">Skip to Yes Content</a>

Затем в CMS я применил идентификатор к содержимому

<div id="some-content">Stuff</div>

То, что я пытаюсь сделать, это применять теги привязки, только когда они на самом деле находятся на этой странице.

Так что, если, например, я на странице «Другое содержимое», это не отображает все теги привязки.

Моей мыслью был следующий помощник:

module ApplicationHelper
  def current_url(url)
   url = request.path_info
   if url.include?('other')
     content_tag :a, href: '#other-content'
   end
  end
end

Затем я заменил якорные теги на

<%= current_url %>

И ... ActionView :: Template :: Error (неверное количество аргументов(дано 0, ожидается 1))

Что-то не так с моим помощником?

Я также попробовал следующее с тем же результатом в моем помощнике:

def original_url
 base_url + original_fullpath
end

def anchor_update
  if original_url.include?('services')
    content_tag :a, href: '#services'
  end
end

Ответы [ 2 ]

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

Вы пропускаете параметр в <%= current_url %>, он должен выглядеть как <%= current_url(url) %>

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

ActionView :: Template :: Error (неверное количество аргументов (задано 0, ожидается 1))

Ну, current_url(url) ожидает один аргумент ивы называете это как <%= current_url %> без аргументов , которые приводят к этой ошибке.Судя по всему, вы должны определить метод без каких-либо аргументов, поскольку вы присваиваете url явно .

module ApplicationHelper
  def current_url
   url = request.path_info
   if url.include?('other')
     content_tag :a, href: '#other-content'
   end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...