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 = "Мій текст надсилання", завдяки цьому я отримав те, що я шукав :)
Rod Nelson

1
Я не можу повірити, що ця дуже проста річ не в документах API для фрікерів для цього методу .
Грант Бірхмайер

4
Це не спрацювало для мене - мені довелося це зробити <%= f.submit :value => "Login" %>. (Рейки 3.2.11)
cassi.lup

2
Якщо ви хочете зберегти стиль кнопки, ви можете зробити: f.button: подати, "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
Мені подобається, як ви вводите іспанські фрази в англійську мову!
сірий

Я хотів відредагувати цю відповідь, але я б швидше дозволив людям приходити сюди і посміхатися (поки вони не потраплять на новий помилку).
Арслан Алі

43

Спираючись на відповідь @ daniel, ви також можете налаштувати подання значень тегів на основі моделі :

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

І тоді у своїй формі ви можете просто використовувати:

<%= f.submit %>

Дивіться тут документацію (другий приклад.)


16

Ви можете використовувати:

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

Для таких питань, будь ласка, скористайтеся доступними документами або на

Іноді пошук у Google, як описаний нижче, допомагає:


3
тут просто набагато простіше запитати, ніж намагатися читати їхні документи без прикладів!
Род Нельсон

2
Я вважаю, що документи Ruby дуже засмучують, коли мова йде про відповіді на конкретні запитання як робити-то-робити-xxx.
Грант Бірхмайер

6

При написанні в ерб

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

при написанні в HAML

= f.button :submit, "your text"

У HAML кома повинна бути там після подання, інакше це призведе до помилки.


2
Кома не повинна бути там, працює для мене без.
erb

Так, ви маєте рацію в коді haml. = f.button: подайте, "ваш текст"
Pulkit Agarwal,

За допомогою коми ставиться помилка (і вона справно працює без неї) на рейках 4 (без хамля).
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 у коментарі до прийнятої відповіді.

Випробувано на рейках 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'

Ура



0

Його просто, використання

<%= f.submit 'Desired text on the button' %>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.