Rails : Rails Form에서 제출 버튼의 텍스트를 변경하는 방법


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" %>. 대신 해야 했습니다. (레일 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 2012 년

이 답변을 편집하고 싶었지만 사람들이 여기에 와서 미소를 지을 것입니다 (새로운 버그가 발생할 때까지).
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
특정 how-do-I-do-xxx 질문에 답할 때 Ruby 문서가 매우 답답하다고 생각합니다.
Grant Birchmeier 2013 년

6

erb로 쓸 때

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

HAML로 작성할 때

= f.button :submit, "your text"

HAML 에서는 제출 후 쉼표가 있어야합니다. 그렇지 않으면 오류가 발생합니다.


2
쉼표가 없어도 괜찮습니다.
erb 2014

그래, 당신은 haml 쉼표가 필요합니다. = f.button : "텍스트"를 제출
Pulkit 아가 왈

쉼표를 사용하면 레일 4 (haml 없음)에서 오류가 발생합니다 (하나없이 잘 작동합니다).
rainbowsorbet

@naomisorbet 예, 그래서 2 개의 댓글에서 수정했습니다. 확인해주십시오.
Pulkit Agarwal 2015

1
예. 나는 첫 번째 답변을 보았고 오류가 발생했습니다. 나는 당신이 말한 것처럼 단순히 쉼표를 추가했으며 작동했습니다.
Sweet_Cherry

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'

건배



0

간단하고 사용

<%= f.submit 'Desired text on the button' %>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.