Я попытался объединить пару упомянутых техник с моими собственными потребностями.
def current_page(path)
'current' if current_page?(path)
end
def create_nav_link(string, path, method)
link_to string, path, data: { hover: string }, method: method
end
def create_nav_item(string, path, method = nil)
content_tag :li, create_nav_link(string, path, method), class: current_page(path)
end
В основном это позволяет вам использовать это так: create_nav_item("profile", profile_path)
, что приведет к: <li><a href="/profile" data-hover="Profile">Profile</a></li>
,
или <li class="current"><a href="/profile" data-hover="Profile">Profile</a></li>
, если это текущая страница.
Я не использовал request.url.include?(path)
, так как она всегда будет подсвечивать кнопку «Домой», и я не мог придуматьОбойтись безоговорочно.