Rails: Cómo cambiar el texto en el botón enviar en un formulario de Rails

109

He enumerado mi archivo _form.html.erb a continuación, lo que me gustaría hacer es cambiar el texto en el botón de enviar.Sé cómo hacerlo en html pero no sé cómo hacerlo en 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
fuente

Respuestas:

193

en vez de

<%= f.submit  %>

poner

<%= f.submit "My Submit Text" %>
Andrei S
fuente
Dios mío, no puedo creer que estaba tan cerca que estaba tratando de usarlo como HTML name = "My Submit Text" gracias, esto me dio lo que estaba buscando :)
Rod Nelson
1
No puedo creer que esto tan simple no esté en los malditos documentos de la API para este método .
Grant Birchmeier
4
Esto no funcionó para mí, tuve que hacerlo en su <%= f.submit :value => "Login" %>lugar. (Rails 3.2.11)
cassi.lup
2
Si desea mantener el estilo del botón, puede hacer lo siguiente: f.button: submit, "My Submit Text"
jonathanrz
Vale la pena leer las otras respuestas que muestran cómo realizar cambios utilizando un archivo como config/locales/en.yml
cwd
63

Si desea cambiar todas las etiquetas de envío de formularios de creación y actualización, este cambio es fácil de realizar. Modificar config/locales/en.ymlasí:

en:
  helpers:
    submit:
      create: "Crear un %{model}"
      update: "Confirmar cambios al %{model} creado"
daniel
fuente
55
¡Me gusta cómo pones frases en español en el idioma inglés!
graywh
Quería editar esta respuesta, pero prefiero dejar que las personas vengan aquí y sonrían (hasta que encuentren un nuevo error).
Arslan Ali
43

Sobre la base de la respuesta de @ daniel, también puede personalizar los valores de las etiquetas de envío según el modelo :

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

Y luego, en su formulario, puede usar:

<%= f.submit %>

Consulte aquí la documentación (segundo ejemplo).

Nathan Kot
fuente
16

Puedes usar:

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

Para preguntas como esta, considere usar los documentos disponibles en

A veces, una búsqueda en Google como la siguiente ayuda:

tomeduarte
fuente
3
¡Es mucho más fácil preguntar aquí que intentar leer los documentos sin ejemplos!
Rod Nelson
2
Encuentro que los documentos de Ruby son muy frustrantes cuando se trata de responder preguntas específicas sobre cómo-hago-xxx.
Grant Birchmeier
6

Al escribir en erb

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

al escribir en HAML

= f.button :submit, "your text"

En HAML, la coma debería estar allí después de enviar, de lo contrario arrojará un error.

Pulkit Agarwal
fuente
2
Comma no tiene que estar ahí, funciona para mí sin.
erb
Sí, tienes razón en haml se requiere una coma. = f. botón: enviar, "su texto"
Pulkit Agarwal
Usar una coma me arroja un error (y funciona bien sin una) en los rieles 4 (sin haml).
rainbowsorbet
@naomisorbet sí, por eso lo he corregido en mi 2 comentario. Por favor, compruebe.
Pulkit Agarwal
1
Si. Miré la primera respuesta y arrojó un error. Simplemente agregué la coma como dijiste y funcionó.
Sweet_Cherry
5

Tuve este problema y solo tuve que traducir el nombre del modelo de esta manera:

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

Esto también complementaría la respuesta de @ daniel, que me dio la pista de lo que faltaba. Sin embargo, supongo que la respuesta de @ daniel no es realmente necesaria ya que ya está en rails-i18n

Claudio Shigueo Watanabe
fuente
2

A veces, el uso de ayudantes no es aceptable debido al texto usado o necesita agregar una clase adicional, etc., por lo que puede anular directamente value:

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

o:

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

Por cierto, fue mencionado por @ cassi.lup en el comentario a la respuesta aceptada.

Probado sobre rieles 4.2.3.

Arogachev
fuente
1

Por si acaso, estaba intentando con este escenario:

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

Pero no estaba funcionando, la solución fue con una coma antes de la clase (no era obvio al principio para mí):

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

Salud

Cris R
fuente
1

para la versión Slim, use value = "xyz" para cambiar el texto de entrada de envío predeterminado.

Asif Ahmed
fuente
Por favor, elabora
JJ for Transparencia y Monica
0

Es simple, use

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