Rails: Jak zmienić tekst na przycisku wysyłania w formularzu Rails

109

Wymieniłem mój plik _form.html.erb poniżej, co chciałbym zrobić, to zmienić tekst na przycisku przesyłania Wiem, jak to zrobić w html, ale nie jestem pewien, jak to zrobić w 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
źródło

Odpowiedzi:

193

zamiast

<%= f.submit  %>

położyć

<%= f.submit "My Submit Text" %>
Andrei S
źródło
OMG nie mogę uwierzyć, że tak Dang blisko starałem się używać go jak nazwy HTML = „tekst” My Prześlij dzięki to ma mi czego szukałem :)
Rod Nelson
1
Nie mogę uwierzyć, że tej bardzo prostej rzeczy nie ma w pieprzonej dokumentacji API dla tej metody .
Grant Birchmeier
4
To nie zadziałało dla mnie - <%= f.submit :value => "Login" %>zamiast tego musiałem to zrobić . (Rails 3.2.11)
cassi.lup
2
Jeśli chcesz zachować styl przycisków, możesz to zrobić: f.button: submit, "My Submit Text"
jonathanrz
Warto przeczytać inne odpowiedzi, które pokazują, jak wprowadzić zmiany za pomocą pliku takiego jak config/locales/en.yml
cwd
63

Jeśli chcesz zmienić wszystkie tagi przesyłania formularza tworzenia i aktualizowania, ta zmiana jest łatwa do wprowadzenia. Zmodyfikuj w ten config/locales/en.ymlsposób:

en:
  helpers:
    submit:
      create: "Crear un %{model}"
      update: "Confirmar cambios al %{model} creado"
daniel
źródło
55
Podoba mi się sposób umieszczania hiszpańskich zwrotów w języku angielskim!
graywh
Chciałem edytować tę odpowiedź, ale wolałbym, aby ludzie tu przychodzili i uśmiechali się (dopóki nie trafią na nowy błąd).
Arslan Ali
43

Opierając się na odpowiedzi @ daniel, możesz również dostosować wartości tagów przesyłania według modelu :

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

A potem w swoim formularzu możesz po prostu użyć:

<%= f.submit %>

Patrz tutaj dla dokumentacji (drugi przykład).

Nathan Kot
źródło
16

Możesz użyć:

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

W przypadku takich pytań rozważ skorzystanie z dostępnych dokumentów pod adresem

Czasami pomaga wyszukiwarka Google, taka jak ta poniżej:

tomeduarte
źródło
3
o wiele łatwiej jest zadać tutaj pytanie niż próbować czytać ich dokumenty bez przykładów!
Rod Nelson
2
Uważam, że dokumentacja Rubiego jest bardzo frustrująca, jeśli chodzi o odpowiadanie na konkretne pytania, jak zrobić xxx.
Grant Birchmeier
6

Pisząc w erb

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

pisząc w języku HAML

= f.button :submit, "your text"

W HAML po przesłaniu powinien być przecinek, w przeciwnym razie zgłosi błąd.

Pulkit Agarwal
źródło
2
Przecinek nie musi tam być, działa dla mnie bez.
erb
Tak, masz rację, przecinek jest wymagany. = f.button: submit, "your text"
Pulkit Agarwal
Użycie przecinka wyrzuca mi błąd (i bez niego działa dobrze) na szynach 4 (brak hamla).
rainbowbowsorbet
@naomisorbet tak, dlatego poprawiłem to w moim 2 komentarzu. Proszę sprawdzić.
Pulkit Agarwal
1
Tak. Spojrzałem na pierwszą odpowiedź i wyrzuciła błąd. Po prostu dodałem przecinek, tak jak powiedziałeś i zadziałało.
Sweet_Cherry
5

Miałem ten problem i musiałem tylko przetłumaczyć nazwę modelu w ten sposób:

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

To również uzupełniłoby odpowiedź @ daniela, która dała mi wskazówkę, czego brakowało. Przypuszczam jednak, że odpowiedź @ daniela nie jest tak naprawdę konieczna, ponieważ jest już na rails-i18n

Claudio Shigueo Watanabe
źródło
2

Czasami używanie pomocników jest niedopuszczalne z powodu używanego tekstu lub musisz dodatkowo dodać klasę itp., Więc możesz bezpośrednio nadpisać value:

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

lub:

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

Nawiasem mówiąc, @ cassi.lup wspomniał o tym w komentarzu do zaakceptowanej odpowiedzi.

Testowane na szynach 4.2.3.

arogaczow
źródło
1

Na wszelki wypadek próbowałem z tym scenariuszem:

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

Ale to nie działało, rozwiązanie było przecinkiem przed zajęciami (nie było to dla mnie oczywiste na początku):

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

Twoje zdrowie

Cris R
źródło
1

w wersji Slim użyj wartości = "xyz", aby zmienić domyślny tekst wejściowy przesyłania.

Asif Ahmed
źródło
proszę rozwinąć
JJ for Transparency and Monica
0

Jego prosta obsługa

<%= f.submit 'Desired text on the button' %>
Ajey
źródło