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.