2017-10-13 9 views
1

Je dois afficher deux boutons créés avec button_to sur certaines pages (Exemple: list/id1/edit) et masquer un bouton sur toutes les autres pages (Exemple: list/new). J'ai ceci:Masquer le bouton si vous êtes sur une page

= button_link t("list.save"), list_path(@list.save_id), class: "button"  
= button_link t("list.cancel"), list_path(@list.hashed_id), class: "button" 

Comment puis-je créer « si vous êtes à la page X montrent un bouton, autre - 2 boutons »?

Répondre

2

J'aime @ la réponse de Arjun (en particulier avec le commentaire de @ RyanWilcox), mais il suffit de jeter quelque chose d'autre dans le ring, vous aurez également accès aux controller_name et action_name aides ...

-à-dire

unless controller_name == 'list' && action_name == 'new' 
    show_the_button 
end 

ou

- unless controller_name == 'list' && action_name == 'new' 
    = button_link t("list.save"), list_path(@list.save_id), class: "button"  
    = button_link t("list.cancel"), list_path(@list.hashed_id), class: "button" 

qui peut être assez flexible en termes de restriction/permettant à certains contrôleurs et/ou des actions.

+0

' current_page? 'Helper fournit également cela. Rails est cool! – arjun

2

S'il vous plaît vérifier ce doc - http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F

Utilisez comme

current_page?('http://www.example.com/shop/checkout')

+1

Vous pensez que vous devriez aussi pouvoir donner un chemin: 'current_page? shop_checkout_path'. Yay routes nommées ... – RyanWilcox

+0

Je pense que oui, seulement si vous avez créé cette route dans config/route.rb – arjun

+0

en effet ... yay pour '$ rake routes';) – RyanWilcox