Rails: So ändern Sie den Text auf der Schaltfläche "Senden" in einem Rails-Formular

109

Ich habe meine _form.html.erb-Datei unten aufgelistet. Ich möchte den Text auf der Senden-Schaltfläche ändern. Ich weiß, wie man es in HTML macht, aber nicht sicher, wie man es in Rails 3 macht

%= 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
quelle

Antworten:

192

anstatt

<%= f.submit  %>

stellen

<%= f.submit "My Submit Text" %>
Andrei S.
quelle
Oh mein Gott, ich kann nicht glauben, dass ich so verdammt nah dran war, dass ich versucht habe, es wie HTML zu verwenden. Name = "My Submit Text", danke, das hat mir das gebracht, wonach ich gesucht habe :)
Rod Nelson
1
Ich kann nicht glauben, dass diese sehr einfache Sache nicht in den verdammten API-Dokumenten für diese Methode enthalten ist .
Grant Birchmeier
4
Das hat bei mir nicht funktioniert - ich musste es <%= f.submit :value => "Login" %>stattdessen tun . (Rails 3.2.11)
cassi.lup
2
Wenn Sie den Schaltflächenstil beibehalten möchten, können Sie Folgendes tun: f.button: submit, "My Submit Text"
jonathanrz
Es lohnt sich, die anderen Antworten zu lesen, die zeigen, wie Änderungen mit einer Datei wie config/locales/en.yml
cwd
63

Wenn Sie alle Tags zum Erstellen und Aktualisieren von Formularübermittlungen ändern möchten, ist diese Änderung einfach durchzuführen. Ändern Sie config/locales/en.ymlwie folgt :

en:
  helpers:
    submit:
      create: "Crear un %{model}"
      update: "Confirmar cambios al %{model} creado"
Daniel
quelle
55
Mir gefällt, wie Sie spanische Phrasen in das englische Gebietsschema einfügen!
Graywh
Ich wollte diese Antwort bearbeiten, aber ich würde lieber Leute hierher kommen lassen und lächeln (bis sie auf einen neuen Fehler stoßen).
Arslan Ali
43

Aufbauend auf @ daniel Antwort, können Sie auch anpassen Tag - Wert auf einer einreichen pro-Modell Basis :

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

Und dann können Sie in Ihrem Formular einfach Folgendes verwenden:

<%= f.submit %>

Siehe hier für die Dokumentation (zweites Beispiel.)

Nathan Kot
quelle
16

Sie können verwenden:

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

Bei Fragen wie diesen können Sie die verfügbaren Dokumente unter verwenden

Manchmal hilft eine Google-Suche wie die folgende:

Tomeduarte
quelle
3
Es ist einfach viel einfacher, hier zu fragen, als zu versuchen, die Dokumente ohne Beispiele zu lesen!
Rod Nelson
2
Ich finde die Ruby-Dokumente sehr frustrierend, wenn es darum geht, bestimmte How-do-I-do-xxx-Fragen zu beantworten.
Grant Birchmeier
6

Beim Schreiben in erb

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

beim Schreiben in HAML

= f.button :submit, "your text"

In HAML sollte nach dem Senden ein Komma vorhanden sein, da sonst ein Fehler ausgelöst wird.

Pulkit Agarwal
quelle
2
Komma muss nicht da sein, funktioniert bei mir ohne.
Erb
Ja, Sie sind richtig in Haml Komma ist erforderlich. = f.button: senden, "Ihr Text"
Pulkit Agarwal
Die Verwendung eines Kommas wirft einen Fehler für mich (und es funktioniert gut ohne einen) auf Schienen 4 (kein Haml).
Regenbogensorbet
@naomisorbet ja, deshalb habe ich es in meinem 2 Kommentar korrigiert. Bitte prüfen.
Pulkit Agarwal
1
Ja. Ich habe mir die erste Antwort angesehen und sie hat einen Fehler ausgelöst. Ich habe einfach das Komma hinzugefügt, wie Sie gesagt haben, und es hat funktioniert.
Sweet_Cherry
5

Ich hatte dieses Problem und musste den Modellnamen nur folgendermaßen übersetzen:

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

Dies würde auch die Antwort von @ daniel ergänzen, die mir den Hinweis gab, was fehlte. Ich nehme jedoch an, dass die Antwort von @ daniel nicht wirklich notwendig ist, da sie bereits auf Rails-i18n steht

Claudio Shigueo Watanabe
quelle
2

Manchmal ist die Verwendung von Helfern aufgrund des verwendeten Textes nicht akzeptabel, oder Sie müssen zusätzlich Klasse usw. hinzufügen, damit Sie Folgendes direkt überschreiben können value:

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

oder:

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

Übrigens wurde es von @ cassi.lup im Kommentar zur akzeptierten Antwort erwähnt.

Auf Schienen getestet 4.2.3.

arogachev
quelle
1

Nur für den Fall, ich habe es mit diesem Szenario versucht:

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

Aber es hat nicht funktioniert, die Lösung war mit einem Komma vor dem Unterricht (es war mir am Anfang nicht klar):

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

Prost

Cris R.
quelle
1

Verwenden Sie für die Slim-Version value = "xyz", um den Standard-Eingabetext für die Übermittlung zu ändern.

Asif Ahmed
quelle
Bitte erläutern Sie
JJ für Transparenz und Monica
0

Es ist einfach zu bedienen

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