Rails: Cách thay đổi văn bản trên nút gửi trong Biểu mẫu Rails


109

Tôi đã liệt kê tệp _form.html.erb của mình bên dưới những gì tôi muốn làm là thay đổi văn bản trên nút gửi. Tôi biết cách thực hiện trong html nhưng không biết cách thực hiện trong 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 %>

Câu trả lời:


193

thay vì

<%= f.submit  %>

đặt

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

OMG tôi không thể tin rằng tôi đã quá dang gần tôi đã cố gắng để sử dụng nó như tên HTML = "My Gửi Text" nhờ này đã cho tôi những gì tôi đang tìm kiếm :)
Rod Nelson

1
Tôi không thể tin rằng điều rất đơn giản này lại không có trong các tài liệu API cho phương pháp này .
Grant Birchmeier

4
Điều này không hiệu quả với tôi - tôi phải làm <%= f.submit :value => "Login" %>thay thế. (Rails 3.2.11)
cassi.lup

2
Nếu bạn muốn giữ nút phong cách, bạn có thể làm: f.button: gửi, "My Gửi Text"
jonathanrz

Đó là giá trị đọc câu trả lời khác cho thấy làm thế nào để thực hiện thay đổi cách sử dụng một tập tin như config/locales/en.yml
cwd

63

Nếu bạn muốn thay đổi tất cả các thẻ gửi biểu mẫu và tạo và cập nhật, thay đổi này rất dễ thực hiện. Sửa đổi config/locales/en.ymlnhư vậy:

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

55
Tôi thích cách bạn đặt các cụm từ tiếng Tây Ban Nha trong ngôn ngữ tiếng Anh!
greywh

Tôi muốn chỉnh sửa câu trả lời này, nhưng tôi thà để mọi người đến đây và mỉm cười (cho đến khi họ gặp một lỗi mới).
Arslan Ali

43

Dựa trên câu trả lời của @ daniel, bạn cũng có thể tùy chỉnh các giá trị thẻ gửi trên cơ sở từng mô hình :

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

Và sau đó trong biểu mẫu của bạn, bạn chỉ có thể sử dụng:

<%= f.submit %>

Xem tài liệu tại đây (ví dụ thứ hai.)


16

Bạn có thể dùng:

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

Đối với những câu hỏi như thế này, hãy xem xét sử dụng các tài liệu có sẵn tại

Đôi khi, tìm kiếm trên google như tìm kiếm dưới đây sẽ giúp:


3
Hỏi ở đây dễ hơn rất nhiều so với việc cố gắng đọc chúng tài liệu mà không có ví dụ!
Rod Nelson

2
Tôi thấy các tài liệu Ruby rất khó chịu khi phải trả lời các câu hỏi cụ thể về how-do-I-do-xxx.
Grant Birchmeier

6

Khi viết bằng erb

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

khi viết bằng HAML

= f.button :submit, "your text"

Trong HAML phải có dấu phẩy sau khi gửi nếu không nó sẽ tạo ra lỗi.


2
Dấu phẩy không nhất thiết phải ở đó, phù hợp với tôi mà không cần.
erb

Yeah, bạn đúng trong haml dấu phẩy là bắt buộc. = f.button: submit, "your text"
Pulkit Agarwal,

Sử dụng dấu phẩy sẽ gây ra lỗi cho tôi (và nó hoạt động tốt mà không có lỗi nào) trên rails 4 (không có haml).
rainbowsorbet

@naomisorbet vâng, đó là lý do tại sao tôi đã sửa nó trong 2 bình luận của mình. Hãy kiểm tra.
Pulkit Agarwal

1
Đúng. Tôi đã xem câu trả lời đầu tiên và nó báo lỗi. Tôi chỉ cần thêm dấu phẩy như bạn đã nói và nó hoạt động.
Sweet_Cherry

5

Tôi gặp sự cố này và tôi chỉ phải dịch tên kiểu máy theo cách này:

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

Điều này cũng sẽ bổ sung cho câu trả lời của @ daniel, cho tôi gợi ý về những gì còn thiếu. Tuy nhiên, tôi cho rằng câu trả lời của @ daniel không thực sự cần thiết vì nó đã có trên rails-i18n


2

Đôi khi việc sử dụng trình trợ giúp không được chấp nhận do văn bản đã sử dụng hoặc bạn cần thêm lớp bổ sung, v.v., vì vậy bạn có thể ghi đè trực tiếp value:

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

hoặc là:

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

Nhân tiện, nó đã được @ cassi.lup đề cập trong bình luận để trả lời được chấp nhận.

Đã thử nghiệm trên Rails 4.2.3.


1

Đề phòng, tôi đã thử với kịch bản này:

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

Nhưng nó không hoạt động, giải pháp là với dấu phẩy trước lớp (tôi không rõ ràng lúc đầu):

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

Chúc mừng



0

Nó đơn giản, sử dụng

<%= f.submit 'Desired text on the button' %>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.