Masquer un morceau de code pour certaines pages

Ce sujet est résolu
27672
,

Bonjour,

Dans mon application.html.erb, j'inclu un partial (Menu du site) :

<!DOCTYPE html>
<html>
  <head>
    <title>Mon app</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>

  </head>
  <body>
    <%= render 'layouts/header' %> # Menu du site
    <%= yield %>
    <%= javascript_include_tag 'application', 'data-turbolinks-eval':'false', 'data-turbolinks-track': 'reload' %>
  </body>
</html>

Et dans mon partial je fais une condition : header.html.erb :

<% unless current_page?('/connexion') || current_page?('/inscription') %>
<a href="<%=  root_path  %>">Accueil</a>
<a href="<%=  new_session_path  %>">Connexion</a>
<a href="<%=  new_users_path  %>">Inscription</a>
<% end %>

Je trouve qu'il pourrai y avoir une autre façon de faire plus propre, pour empêcher le partial de s'afficher selon certaines pages de mon site.

Quelqu'un aurait-il une idée ?

Merci

2 Réponse

116623
,

Comme le dit @takeback, le mieux ce serait que tu mettes ta condition sur le render : <%= render 'layouts/header' unless current_page?('/connexion') || current_page?('/inscription') %> et tu pourrais modifier le slug et le remplacer par le nom de la route (dans ton fichier de routes, par exemple ici le slug /hello a le nom :hello get '/hello', to: 'application#hello', as: :hello) et faire ta condition sur le nom plutôt que sur le slug : check ça https://apidock.com/rails/ActionView/Helpers/UrlHelper/current_page%3F, ça te permettra d'éviter de changer ta condition si tu changes le slug.

52116
,

Salut,
Tu peux mettre ta condition sur le render, plutôt que dans ton partial.