Masquer un morceau de code pour certaines pages

Par Nikola, il y a 8 ans


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éponses

Takeback, il y a 8 ans

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

bastienrobert, il y a 8 ans

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.