Rails: Rails Formundaki gönder düğmesindeki metin nasıl değiştirilir?


109

_form.html.erb dosyamı aşağıda listeledim, yapmak istediğim gönder düğmesindeki metni değiştirmek. Bunu html'de nasıl yapacağımı biliyorum ama Rails 3'te nasıl yapılacağını bilmiyorum

%= 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 %>

Yanıtlar:


193

onun yerine

<%= f.submit  %>

koymak

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

Aman Tanrım, bu kadar yakın olduğuma inanamıyorum, HTML adı = "Gönderme Metnim" gibi kullanmaya çalışıyordum, bu bana aradığımı aldı :)
Rod Nelson

1
Bu çok basit şeyin, bu yöntemin lanet olası API belgelerinde olmadığına inanamıyorum .
Grant Birchmeier

4
Bu benim için işe yaramadı - <%= f.submit :value => "Login" %>onun yerine yapmak zorundaydım . (Raylar 3.2.11)
cassi.lup

2
Düğme stilini korumak istiyorsanız, şunları yapabilirsiniz: f.button: submit, "My Submit Text"
jonathanrz

Bir dosya kullanarak nasıl değişiklik yapılacağını gösteren diğer cevapları okumaya değer config/locales/en.yml
cwd

63

Tüm oluşturma ve güncelleme form gönderme etiketlerini değiştirmek istiyorsanız, bu değişikliği yapmak kolaydır. Şu şekilde değiştirin config/locales/en.yml:

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

55
İspanyolca cümleleri İngilizce yerel ayara nasıl koyduğunuzu seviyorum!
graywh

Bu cevabı düzenlemek istedim, ancak insanların buraya gelip gülümsemelerine izin vermeyi tercih ederim (yeni bir hataya ulaşana kadar).
Arslan Ali

43

@ Daniel'in cevabına dayanarak , gönderme etiketi değerlerini modele göre de özelleştirebilirsiniz :

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

Ve sonra formunuzda kullanabilirsiniz:

<%= f.submit %>

Belgeler için buraya bakın (ikinci örnek.)


16

Kullanabilirsiniz:

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

Bunun gibi sorular için, şu adresteki mevcut dokümanları kullanmayı düşünün:

Bazen aşağıdaki gibi bir Google araması yardımcı olur:


3
Örneksiz dokümanları okumaya çalışmaktan çok daha kolay!
Rod Nelson

2
Konu belirli "nasıl yapılır-yaparım-yap-xxx" sorularını yanıtlamaya geldiğinde Ruby belgelerini çok sinir bozucu buluyorum.
Grant Birchmeier

6

Erb ile yazarken

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

HAML'de yazarken

= f.button :submit, "your text"

In HAML virgül olmalıdır sonra aksi teslim hatayı atar.


2
Virgülün orada olması gerekmez, benim için onsuz çalışır.
erb

Evet, haklısın haml virgül gerekli. = f.button: gönder, "metniniz"
Pulkit Agarwal

Virgül kullanmak benim için (ve bir olmadan iyi çalışıyor) raylar 4'e (haml yok) bir hata veriyor.
gökkuşağıorbet

@naomisorbet evet, bu yüzden 2 yorumumda düzelttim. Lütfen kontrol edin.
Pulkit Agarwal

1
Evet. İlk cevaba baktım ve bir hata yaptı. Dediğin gibi virgül ekledim ve işe yaradı.
Sweet_Cherry

5

Bu sorunu yaşadım ve yalnızca model adını şu şekilde çevirmek zorunda kaldım:

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

Bu aynı zamanda @ daniel'in cevabını tamamlayacak ve bana neyin eksik olduğuna dair ipucu verecek. Bununla birlikte, @ daniel'in cevabının zaten rails-i18n üzerinde olduğu için gerçekten gerekli olmadığını düşünüyorum


2

Bazen yardımcıların kullanılması, kullanılan metin nedeniyle kabul edilemez veya ek olarak sınıf vb. Eklemeniz gerekir, böylece doğrudan geçersiz kılabilirsiniz value:

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

veya:

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

Bu arada, @ cassi.lup tarafından kabul edilen cevaba yorumda değinildi .

Raylarda test edildi 4.2.3.


1

Her ihtimale karşı, şu senaryoyu deniyordum:

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

Ama işe yaramıyordu, çözüm dersten önce virgülle yazılıyordu (başlangıçta benim için açık değildi):

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

Şerefe



0

Basit, kullanımı

<%= f.submit 'Desired text on the button' %>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.