Rails: Comment modifier le texte sur le bouton d'envoi dans un formulaire Rails


109

J'ai répertorié mon fichier _form.html.erb ci-dessous, ce que je voudrais faire est de changer le texte sur le bouton d'envoi, je sais comment le faire en html mais je ne sais pas comment le faire dans Rails 3

%= form_for(@faq) do |f| %>
  <% if @faq.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@faq.errors.count, "error") %> prohibited this faq from being saved:</h2>

      <ul>
      <% @faq.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :question %><br />
    <%= f.text_field :question %>
  </div>
  <div class="field">
    <%= f.label :answer %><br />
    <%= f.text_area :answer %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Réponses:


193

au lieu de

<%= f.submit  %>

mettre

<%= f.submit "My Submit Text" %>

OMG je ne peux pas croire que j'étais si proche que j'essayais de l'utiliser comme HTML name = "My Submit Text" merci cela m'a obtenu ce que je cherchais :)
— Rod Nelson

1
Je ne peux pas croire que cette chose très simple ne soit pas dans la documentation de l' API pour cette méthode .
— Grant Birchmeier

4
Cela n'a pas fonctionné pour moi - j'ai dû faire à la <%= f.submit :value => "Login" %>place. (Rails 3.2.11)
— cassi.lup

2
Si vous souhaitez conserver le style du bouton, vous pouvez faire: f.button: submit, "My Submit Text"
— jonathanrz

Il vaut la peine de lire les autres réponses qui montrent comment apporter des modifications à l'aide d'un fichier tel que config/locales/en.yml
— cwd

63

Si vous souhaitez modifier toutes les balises d'envoi de formulaire de création et de mise à jour, cette modification est facile à effectuer. Modifiez config/locales/en.ymlcomme ceci:

en:
  helpers:
    submit:
      create: "Crear un %{model}"
      update: "Confirmar cambios al %{model} creado"

55
J'aime la façon dont vous mettez des phrases espagnoles dans la langue anglaise!
— graywh

Je voulais modifier cette réponse, mais je préférerais laisser les gens venir ici et sourire (jusqu'à ce qu'ils rencontrent un nouveau bug).
— Arslan Ali

43

En vous basant sur la réponse de @ daniel, vous pouvez également personnaliser les valeurs des balises d'envoi par modèle :

en:
  helpers:
    submit:
      model_name:
        create: "Create"
        update: "Update"

Et puis dans votre formulaire, vous pouvez simplement utiliser:

<%= f.submit %>

Voir ici pour la documentation (deuxième exemple.)


16

Vous pouvez utiliser:

<%= f.submit 'Name of the submit button' %>

Pour des questions comme celle-ci, pensez à utiliser les documents disponibles à l'adresse

Parfois, une recherche Google comme celle ci-dessous aide:


3
c'est tellement plus facile de demander ici que d'essayer de les lire sans exemples!
— Rod Nelson

2
Je trouve que la documentation Ruby est très frustrante lorsqu'il s'agit de répondre à des questions spécifiques de comment faire-je-faire-xxx.
— Grant Birchmeier

6

Lors de l'écriture en erb

<%= f.submit "your text" %>

lors de l'écriture en HAML

= f.button :submit, "your text"

Dans HAML, une virgule devrait être là après la soumission, sinon cela provoquera une erreur.


2
La virgule n'a pas à être là, fonctionne pour moi sans.
— erb

Ouais, vous avez raison dans la virgule haml est obligatoire. = f.button: submit, "your text"
— Pulkit Agarwal

L'utilisation d'une virgule jette une erreur pour moi (et cela fonctionne bien sans une) sur les rails 4 (pas de haml).
— rainbowsorbet

@naomisorbet oui, c'est pourquoi je l'ai corrigé dans mon commentaire. Vérifiez s'il vous plaît.
— Pulkit Agarwal

1
Oui. J'ai regardé la première réponse et elle a jeté une erreur. J'ai simplement ajouté la virgule comme vous l'avez dit et cela a fonctionné.
— Sweet_Cherry

5

J'ai eu ce problème et je n'ai eu qu'à traduire le nom du modèle de cette façon:

pt-br:
  activerecord:
    models:
      user:
        one: "Usuário"
        more: "Usuários"

Cela compléterait également la réponse de @ daniel qui m'a donné une idée de ce qui manquait. Cependant, je suppose que la réponse de @ daniel n'est pas vraiment nécessaire car elle est déjà sur rails-i18n


2

Parfois , l' utilisation des aides n'est pas acceptable en raison du texte utilisé ou vous avez besoin de plus ajouter la classe , etc., de sorte que vous pouvez remplacer directement value:

<%= f.submit class: 'btn btn-primary', value: 'Login' %>

ou:

<%= f.button :submit, class: 'btn btn-primary', value: 'Login' %>

Au fait, il a été mentionné par @ cassi.lup en commentaire à la réponse acceptée.

Testé sur rails 4.2.3.


1

Juste au cas où, j'essayais avec ce scénario:

f.submit t('conf.begin') class: 'btn btn-outline btn-success'

Mais cela ne fonctionnait pas, la solution était avec une virgule avant la classe (ce n'était pas évident au début pour moi):

f.submit t('conf.begin'), class: 'btn btn-outline btn-success'

À votre santé



0

C'est simple, utilisez

<%= f.submit 'Desired text on the button' %>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.