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", спасибо, это дало мне то, что я искал :)
Род Нельсон
1
Я не могу поверить, что этой очень простой вещи нет в чертовой документации API для этого метода .
Grant Birchmeier
4
У меня это не сработало - мне пришлось сделать это <%= f.submit :value => "Login" %>. (Rails 3.2.11)
cassi.lup
2
Если вы хотите сохранить стиль кнопки, вы можете: f.button: submit, «Мой текст для отправки»
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
Я хотел отредактировать этот ответ, но я бы предпочел позволить людям приходить сюда и улыбаться (пока они не обнаружат новую ошибку).
Арслан Али
43

Основываясь на ответе @daniel, вы также можете настроить значения тегов отправки для каждой модели :

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

А затем в своей форме вы можете просто использовать:

<%= f.submit %>

См. Здесь документацию (второй пример).

Натан Кот
источник
16

Ты можешь использовать:

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

По таким вопросам рассмотрите возможность использования документации, доступной по адресу

Иногда помогает поиск в Google, подобный приведенному ниже:

Tomeduarte
источник
3
гораздо проще спросить здесь, чем пытаться читать их документы без примеров!
Род Нельсон
2
Я считаю, что документация по Ruby очень разочаровывает, когда дело доходит до ответов на конкретные вопросы, как-я-делаю-ххх.
Grant Birchmeier
6

При записи в эрб

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

при записи в HAML

= f.button :submit, "your text"

В HAML после отправки должна быть запятая, иначе будет выдана ошибка.

Пулкит Агарвал
источник
2
Запятая не обязательна, у меня работает без нее.
erb
Ага, ты прав в хамле запятая обязательна. = f.button: submit, "ваш текст"
Pulkit Agarwal
Использование запятой вызывает у меня ошибку (и отлично работает без нее) на rails 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'

Ура

Cris R
источник
1

для версии Slim используйте value = "xyz", чтобы изменить вводимый текст по умолчанию.

Асиф Ахмед
источник
пожалуйста, уточнить
JJ для Transparency и Моника
0

Это просто, используйте

<%= f.submit 'Desired text on the button' %>
Ajey
источник