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 %>
Rod Nelson
la source

Réponses:

193

au lieu de

<%= f.submit  %>

mettre

<%= f.submit "My Submit Text" %>
Andrei S
la source
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"
Daniel
la source
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.)

Nathan Kot
la source
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:

tomeduarte
la source
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.

Pulkit Agarwal
la source
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

Claudio Shigueo Watanabe
la source
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.

arogatchev
la source
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é

Cris R
la source
1

pour la version Slim, utilisez value = "xyz" pour modifier le texte d'entrée d'envoi par défaut.

Asif Ahmed
la source
veuillez préciser
JJ for Transparency and Monica
0

C'est simple, utilisez

<%= f.submit 'Desired text on the button' %>
Ajey
la source