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、2013年

4
これは私にはうまくいきませんでした- <%= f.submit :value => "Login" %>代わりにやらなければなりませんでした。(Rails 3.2.11)
cassi.lup 2013年

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

ドキュメント(2番目の例)については、こちらを参照してください。


16

以下を使用できます。

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

このような質問については、次のいずれかの入手可能なドキュメントの使用を検討してください。

以下のようなGoogle検索が役立つ場合があります。


3
ここで質問するのは、例なしでドキュメントを読もうとするよりもはるかに簡単です。
Rod Nelson、

2
Rubyのドキュメントは、特定のhow-do-I-do-xxxの質問に答えるときに非常にイライラします。
Grant Birchmeier 2013年

6

erbで書くとき

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

HAMLで書き込む場合

= f.button :submit, "your text"

HAMLのコンマの後に、それ以外の場合はエラーがスローされます提出がなければなりません。


2
コンマはそこにある必要はありません。
erb 2014

ええ、あなたは正しいhamlでカンマが必要です。= f.button:submit、 "your text"
Pulkit Agarwal 14

コンマを使用すると、レール4(hamlなし)でエラーがスローされます(コンマなしでも正常に機能します)。
レインボーソルベ2015

@naomisorbetはい、それが私の2つのコメントで修正した理由です。チェックしてください。
Pulkit Agarwal 2015

1
はい。最初の回答を確認したところ、エラーが発生しました。私は単にあなたが言ったようにカンマを追加しました、そしてそれはうまくいきました。
Sweet_Cherry 2018

5

私にはこの問題があり、モデル名をこのように翻訳するだけで済みました:

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

これはまた、何が欠けているかについてのヒントを与えてくれた@danielの回答を補足するものです。ただし、@ danielの回答はすでにrails-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.