Rails: Bagaimana mengubah teks pada tombol kirim dalam Formulir Rails

109

Saya telah mendaftarkan file _form.html.erb saya di bawah ini yang ingin saya lakukan adalah mengubah teks pada tombol kirim. Saya tahu cara melakukannya di html tetapi tidak tahu cara melakukannya di 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
sumber

Jawaban:

193

dari pada

<%= f.submit  %>

taruh

<%= f.submit "My Submit Text" %>
Andrei S
sumber
OMG saya tidak percaya saya sangat dekat saya mencoba menggunakannya seperti HTML name = "My Submit Text" terima kasih ini mendapatkan apa yang saya cari :)
Rod Nelson
1
Saya tidak percaya hal yang sangat sederhana ini tidak ada dalam dokumen API fricking untuk metode ini .
Berikan Birchmeier
4
Ini tidak berhasil untuk saya - saya harus melakukannya <%= f.submit :value => "Login" %>. (Rel 3.2.11)
cassi.lup
2
Jika Anda ingin mempertahankan gaya tombol, Anda dapat melakukan: f.button: submit, "My Submit Text"
jonathanrz
Layak untuk membaca jawaban lain yang menunjukkan cara membuat perubahan menggunakan file seperti config/locales/en.yml
cwd
63

Jika Anda ingin mengubah semua membuat dan memperbarui tag pengiriman formulir, perubahan ini mudah dilakukan. Modifikasi config/locales/en.ymlseperti ini:

en:
  helpers:
    submit:
      create: "Crear un %{model}"
      update: "Confirmar cambios al %{model} creado"
daniel
sumber
55
Saya suka bagaimana Anda menempatkan frasa bahasa Spanyol dalam bahasa Inggris!
graywh
Saya ingin mengedit jawaban ini, tetapi saya lebih suka membiarkan orang datang ke sini, dan tersenyum (sampai mereka menemukan bug baru).
Arslan Ali
43

Berdasarkan jawaban @ daniel, Anda juga dapat menyesuaikan nilai tag pengiriman berdasarkan model :

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

Dan kemudian dalam formulir Anda, Anda cukup menggunakan:

<%= f.submit %>

Lihat di sini untuk dokumentasi (contoh kedua.)

Nathan Kot
sumber
16

Kamu bisa memakai:

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

Untuk pertanyaan seperti ini, pertimbangkan untuk menggunakan dokumen yang tersedia di

Terkadang, pencarian google seperti di bawah ini membantu:

tomeduarte
sumber
3
jauh lebih mudah bertanya di sini daripada mencoba membacanya dokumen tanpa contoh!
Rod Nelson
2
Saya menemukan dokumen Ruby sangat membuat frustasi ketika harus menjawab pertanyaan spesifik bagaimana melakukan-saya-melakukan-xxx.
Berikan Birchmeier
6

Saat menulis di erb

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

saat menulis di HAML

= f.button :submit, "your text"

Dalam HAML koma harus ada setelah mengirimkan jika tidak maka akan menimbulkan kesalahan.

Pulkit Agarwal
sumber
2
Koma tidak harus ada, bekerja untuk saya tanpa.
erb
Ya, Anda benar di haml koma diperlukan. = f.button: kirim, "teks Anda"
Pulkit Agarwal
Menggunakan koma membuat kesalahan bagi saya (dan berfungsi dengan baik tanpa koma) di rel 4 (tidak ada haml).
pelangi
@naomisorbet ya, makanya saya koreksi di 2 komentar saya. Silakan periksa.
Pulkit Agarwal
1
Iya. Saya melihat jawaban pertama dan itu membuat kesalahan. Saya hanya menambahkan koma seperti yang Anda katakan dan berhasil.
Sweet_Cherry
5

Saya mengalami masalah ini dan saya hanya perlu menerjemahkan nama model seperti ini:

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

Ini juga akan melengkapi jawaban @ daniel yang memberi saya petunjuk apa yang hilang. Namun, saya kira jawaban @ daniel tidak terlalu diperlukan karena sudah ada di rails-i18n

Claudio Shigueo Watanabe
sumber
2

Terkadang menggunakan helper tidak dapat diterima karena teks bekas atau Anda perlu menambahkan kelas, dll., Jadi Anda dapat langsung mengganti value:

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

atau:

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

Ngomong-ngomong itu disebutkan oleh @ cassi.lup dalam komentar untuk menerima jawaban.

Diuji di Rails 4.2.3.

arogachev
sumber
1

Untuk berjaga-jaga, saya mencoba skenario ini:

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

Tapi itu tidak berhasil, solusinya adalah dengan koma sebelum kelas (itu tidak jelas pada awalnya untuk saya):

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

Bersulang

Cris R
sumber
1

untuk versi Slim gunakan nilai = "xyz" untuk mengubah teks masukan pengiriman default.

Asif Ahmed
sumber
tolong jelaskan
JJ untuk Transparansi dan Monica
0

Sederhana saja, gunakan

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