Rails: come modificare il testo sul pulsante di invio in un modulo Rails


109

ho elencato il mio file _form.html.erb sotto quello che vorrei fare è cambiare il testo sul pulsante di invio so come farlo in html ma non so come farlo in 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 %>

Risposte:


193

invece di

<%= f.submit  %>

mettere

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

OMG non posso credere di essere stato così dannatamente vicino che stavo cercando di usarlo come nome HTML = "Il mio testo di invio" grazie questo mi ha fatto quello che stavo cercando :)
Rod Nelson

1
Non riesco a credere che questa cosa molto semplice non sia nei documenti API per questo metodo .
Grant Birchmeier

4
Questo non ha funzionato per me - ho dovuto farlo <%= f.submit :value => "Login" %>invece. (Rails 3.2.11)
cassi.lup

2
Se vuoi mantenere lo stile dei pulsanti, puoi fare: f.button: submit, "My Submit Text"
jonathanrz

Vale la pena leggere le altre risposte che mostrano come apportare modifiche utilizzando un file come config/locales/en.yml
cwd

63

Se desideri modificare tutti i tag di creazione e aggiornamento del modulo, questa modifica è facile da apportare. Modifica in questo config/locales/en.ymlmodo:

en:
  helpers:
    submit:
      create: "Crear un %{model}"
      update: "Confirmar cambios al %{model} creado"

55
Mi piace come metti le frasi spagnole nella lingua inglese!
graywh

Volevo modificare questa risposta, ma preferirei che le persone venissero qui e sorridessero (fino a quando non colpiscono un nuovo bug).
Arslan Ali

43

Basandosi sulla risposta di @ daniel, puoi anche personalizzare i valori dei tag di invio in base al modello :

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

E poi nel tuo modulo puoi semplicemente usare:

<%= f.submit %>

Vedi qui per la documentazione (secondo esempio.)


16

Puoi usare:

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

Per domande come questa, considera l'utilizzo dei documenti disponibili su

A volte, una ricerca su Google come quella qui sotto aiuta:


3
è molto più facile chiedere qui che provare a leggere i documenti senza esempi!
Rod Nelson

2
Trovo che i documenti di Ruby siano molto frustranti quando si tratta di rispondere a domande specifiche su come si fa a fare xxx.
Grant Birchmeier

6

Quando si scrive in erb

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

quando si scrive in HAML

= f.button :submit, "your text"

In HAML la virgola dovrebbe essere presente dopo l'invio, altrimenti verrà generato un errore.


2
Comma non deve essere lì, funziona per me senza.
erb

Sì, hai ragione in haml è richiesta la virgola. = f.button: submit, "your text"
Pulkit Agarwal

L'uso di una virgola genera un errore per me (e funziona bene senza uno) su rails 4 (no haml).
rainbowsorbet

@naomisorbet si, è per questo che l'ho corretto nel mio 2 commento. Si prega di controllare.
Pulkit Agarwal

1
Sì. Ho guardato la prima risposta e ha generato un errore. Ho semplicemente aggiunto la virgola come hai detto e ha funzionato.
Sweet_Cherry

5

Ho avuto questo problema e ho dovuto tradurre solo il nome del modello in questo modo:

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

Questo completerebbe anche la risposta di @ daniel che mi ha dato il suggerimento di ciò che mancava. Tuttavia, suppongo che la risposta di @ daniel non sia davvero necessaria in quanto è già su rails-i18n


2

A volte usando aiutanti non è accettabile a causa di testo utilizzato o in aggiunta dovete aggiungere classe, ecc, in modo da poter sostituire direttamente value:

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

o:

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

A proposito, è stato menzionato da @ cassi.lup nel commento alla risposta accettata.

Testato su rotaie 4.2.3.


1

Per ogni evenienza, stavo provando con questo scenario:

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

Ma non funzionava, la soluzione era con una virgola prima della lezione (non era ovvio all'inizio per me):

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

Saluti



0

È semplice, usa

<%= f.submit 'Desired text on the button' %>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.