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.