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

Antworten:


192

anstatt

<%= f.submit  %>

stellen

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

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"

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.)


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:


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.


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


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.


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



0

Es ist einfach zu bedienen

<%= f.submit 'Desired text on the button' %>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.