web-dev-qa-db-fra.com

rails 3: afficher le lien sous forme de bouton?

Sur certaines pages non-formulaire, j'ai quelques liens qui auraient l'air mieux comme un bouton qu'un hyperlien ...

Je pensais que button_to au lieu de link_to fonctionnerait, mais buton_to semble toujours être traité comme un post.

Existe-t-il un moyen simple de remplacer simplement un lien (non soumis) par un bouton?

33
jpwynn

Tout ce que vous avez à faire est d'ajouter un :method => "get" à la fin de votre bouton_à pour le traiter comme un lien

La voie button_to

Utilisant un users_path

<%= button_to "BUTTON: link version", users_path, :method => "get" %>

La manière CSS

Ou au lieu d'insérer un formulaire dans votre code HTML (ce que fait réellement button_to), vous pouvez utiliser la méthode de nettoyage (du point de vue de la conception Web) et en fait simplement styliser le lien de manière à le faire ressembler à un bouton. plusieurs avantages

  • Garde les formulaires hors de votre HTML, alors qu'ils ne devraient vraiment pas être là
  • Garde votre erb propre et normal, sans surprise
  • Très flexible, vous pouvez les faire ressembler à vos envies
  • Voici un excellent article sur la façon de le faire et voici un petit extrait de ce code, cela dépend vraiment de jouer avec la bordure, le rembourrage et l'image d'arrière-plan

    a.button {
      background: transparent url('bg_button_a.gif') no-repeat scroll top right;
      color: #444;
      display: block;
      float: left;
      font: normal 12px arial, sans-serif;
      height: 24px;
      margin-right: 6px;
      padding-right: 18px; /* sliding doors padding */
      text-decoration: none;
    }
    

    Le code provient du lien ci-dessus. Quelle que soit la méthode que vous choisissez devrait fonctionner correctement, profitez-en!

    73
    Paul Kaplan

    Je pense que tout ce que vous voulez ici, c'est la vue juste. et si tel est le cas, vous pouvez simplement ajouter une classe à l'objet de classe dans le lien

    <%= link_to 'Add Class', new_subject_path, class: "btn btn-primary"%>

    12
    Dhruv Joshi

    J'ai récemment dû le faire parce que mon formulaire agissait différemment pour link_to qu'il ne l'était avec button_to et j'avais besoin des fonctionnalités fournies par le lien. La meilleure solution que j'ai trouvée n'utilise pas du tout de CSS mais appelle plutôt .html_safe pour échapper le code html dans le code Ruby et afficher correctement le lien sous forme de bouton. Ce que vous voulez faire est le suivant:

    <%= link_to "<button>This is a button</button>".html_safe, some_path, :id => "button_id", :class => "button_class" %>
    
    10
    Robert

    Si tout ce que vous voulez faire est de faire ressembler un lien à un bouton.

    En changeant link_to à button_to est tout ce dont j'avais besoin.

    1
    jasonleonhard