Rails: วิธีเปลี่ยนข้อความบนปุ่มส่งในแบบฟอร์ม Rails


109

ฉันได้แสดงรายการไฟล์ _form.html.erb ของฉันไว้ด้านล่างสิ่งที่ฉันต้องการจะทำคือเปลี่ยนข้อความบนปุ่มส่งฉันรู้วิธีทำใน html แต่ไม่แน่ใจว่าจะทำอย่างไรใน 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 %>

คำตอบ:


193

แทน

<%= f.submit  %>

ใส่

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

OMG ฉันไม่อยากจะเชื่อเลยว่าฉันสนิทกันมากฉันพยายามใช้มันเหมือน HTML name = "My Submit Text" ขอบคุณสิ่งนี้ทำให้ฉันได้สิ่งที่ฉันกำลังมองหา :)
Rod Nelson

1
ฉันไม่อยากจะเชื่อเลยว่าสิ่งที่ง่ายมากนี้ไม่ได้อยู่ในเอกสาร API สำหรับวิธีนี้
Grant Birchmeier

4
สิ่งนี้ไม่ได้ผลสำหรับฉัน - ฉันต้องทำ<%= f.submit :value => "Login" %>แทน (Rails 3.2.11)
cassi.lup

2
หากคุณต้องการคงรูปแบบปุ่มไว้คุณสามารถทำได้: f.button: submit, "My Submit Text"
jonathanrz

ควรอ่านคำตอบอื่น ๆ ที่แสดงวิธีการเปลี่ยนแปลงโดยใช้ไฟล์เช่น config/locales/en.yml
cwd

63

หากคุณต้องการเปลี่ยนแท็กการสร้างและอัปเดตแบบฟอร์มทั้งหมดการเปลี่ยนแปลงนี้ทำได้ง่าย แก้ไขconfig/locales/en.ymlดังนี้:

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

55
ฉันชอบวิธีที่คุณใส่วลีภาษาสเปนในภาษาอังกฤษ!
graywh

ฉันต้องการแก้ไขคำตอบนี้ แต่ฉันอยากให้คนอื่นมาที่นี่และยิ้ม (จนกว่าพวกเขาจะพบข้อผิดพลาดใหม่)
Arslan Ali

43

จากคำตอบของ @ daniel คุณยังสามารถปรับแต่งค่าส่งแท็กตามแต่ละรุ่น :

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

จากนั้นในรูปแบบของคุณคุณสามารถใช้:

<%= f.submit %>

ดูเอกสารประกอบได้ที่นี่ (ตัวอย่างที่สอง)


16

คุณสามารถใช้ได้:

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

สำหรับคำถามเช่นนี้ให้พิจารณาใช้เอกสารที่มีอยู่ที่

บางครั้งการค้นหาโดย Google เช่นเดียวกับด้านล่างช่วย:


3
การถามที่นี่ง่ายกว่าการพยายามอ่านเอกสารโดยไม่มีตัวอย่าง!
Rod Nelson

2
ฉันพบว่าเอกสาร Ruby นั้นน่าหงุดหงิดมากเมื่อต้องตอบคำถามเฉพาะเจาะจงเกี่ยวกับ how-do-I-do-xxx
Grant Birchmeier

6

เมื่อเขียนใน erb

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

เมื่อเขียนในHAML

= f.button :submit, "your text"

ในHAML comma ควรอยู่ที่นั่นหลังจากส่งมิฉะนั้นจะทำให้เกิดข้อผิดพลาด


2
ไม่จำเป็นต้องมีเครื่องหมายจุลภาคสำหรับฉันถ้าไม่มี
erb

ใช่คุณพูดถูกต้องต้องใส่เครื่องหมายจุลภาค = f.button: submit, "your text"
Pulkit Agarwal

การใช้ลูกน้ำทำให้เกิดข้อผิดพลาดสำหรับฉัน (และใช้งานได้ดีหากไม่มี) บนราง 4 (ไม่มี haml)
rainbowsorbet

@naomisorbet ใช่นั่นคือเหตุผลที่ฉันได้แก้ไขใน 2 ความคิดเห็นของฉัน โปรดตรวจสอบ.
Pulkit Agarwal

1
ใช่. ฉันมองไปที่คำตอบแรกและเกิดข้อผิดพลาด ฉันเพียงแค่เพิ่มลูกน้ำอย่างที่คุณพูดและมันก็ใช้ได้
Sweet_Cherry

5

ฉันมีปัญหานี้และฉันต้องแปลชื่อรุ่นด้วยวิธีนี้เท่านั้น:

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

สิ่งนี้จะช่วยเติมเต็มคำตอบของ @ daniel ซึ่งให้คำใบ้ถึงสิ่งที่ขาดหายไป อย่างไรก็ตามฉันคิดว่าคำตอบของ @ daniel นั้นไม่จำเป็นจริงๆเพราะมันมีอยู่แล้วบนราง -i18n


2

บางครั้งใช้ผู้ช่วยเหลือไม่เป็นที่ยอมรับเพราะข้อความที่ใช้หรือคุณยังจำเป็นต้องเพิ่มระดับ ฯลฯ เพื่อให้คุณโดยตรงสามารถแทนที่value:

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

หรือ:

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

โดยวิธีการกล่าวถึงโดย@ cassi.lupในความคิดเห็นเพื่อยอมรับคำตอบ

ทดสอบกับ Rails 4.2.3


1

ในกรณีนี้ฉันกำลังลองใช้สถานการณ์นี้:

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

แต่มันไม่ได้ผลการแก้ปัญหาคือใช้ลูกน้ำก่อนชั้นเรียน (ไม่ชัดเจนในตอนเริ่มต้นสำหรับฉัน):

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

ไชโย



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.