Добавьте класс CSS в <% = f.submit%>


Ответы:


352
<%= f.submit 'name of button here', :class => 'submit_class_name_here' %>

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

Кроме того, вы можете стилизовать кнопку без класса:

form#form_id_here input[type=submit]

Попробуйте это тоже.


Превосходно! Спасибо, Срджан. Небольшое любопытство - я пытался использовать disable_withэти кнопки отправки, но они никогда не работали. Есть ли причина, по которой вы это знаете? +1
sscirrus

3
Попробуйте использовать хэш для параметров: {: class => 'class_name',: disable_with => 'Editing ...'}. Это пойдет после названия кнопки. Это должно работать, или, по крайней мере, так задокументировано.
Срджан Пежич

3
Обратите внимание, что вам нужно явно передать строку («имя кнопки здесь») в качестве первого аргумента submit, чтобы использовать хеш: class, как в ответе выше. Если у вас нет этой строки, вы получите сообщение об ошибке.
Уиллкол

7
добавить класс, не удаляя значение по умолчанию, ответ здесь stackoverflow.com/questions/8811254/…
Naoise Golden

<%= form.submit :class => 'class_name' %>работает, если вы не хотите использовать имя.

141

Вы можете добавить объявление класса к кнопке отправки формы, выполнив следующие действия:

<%= f.submit class: 'btn btn-default' %> <- Примечание: запятая отсутствует!

Если вы изменяете _ частичку form.html.erb каркаса и хотите сохранить динамическое изменение имени кнопки между действиями контроллера, НЕ указывайте имя 'name'.

Без указания имени и в зависимости от действия, отображаемого на форме, кнопка получит .class = "btn btn-default"(Bootstrap class) (или что- .classто еще, что вы укажете) со следующими именами:

  • Обновить имя модели

  • Создать model_name
    (где model_name - имя модели лесов)


13
Несмотря на то, что у него меньше голосов, чем у выбранного ответа, большинство людей захотят использовать именно это решение.
ИАМНАН

3
Это то, что я пытался найти
Сандип Гарг

1
Полезно и позволяет добавлять атрибут HTML («id» или «class», как в примере), не изменяя текст кнопки, сгенерированный Rails по умолчанию.
TK-421

1
IMO, это лучший ответ, потому что он сохраняет поведение динамического присвоения текста кнопке («Создать» или «Обновить») на основе действия контроллера
шестьдесят четыре бита

Определенно, как сказал @ sixty4bit. Следует установить текст кнопки в файлах перевода, чтобы форму можно было повторно использовать в различных действиях контроллера, например «создать комментарий» или «обновить комментарий». Посмотрите этот ответ - stackoverflow.com/a/18255633/5355691
Джарвис Джонсон

26

Rails 4 и Bootstrap 3 «основная» кнопка

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

Дает что-то вроде:

Экран-2014-01-22_02.24.26.png


2
Это на самом деле лучше, потому что указание nilимени сохраняет поведение помощника по умолчанию, при котором, если он находит переменную экземпляра для создаваемого / отображаемого объекта, например @person, он будет называть кнопку соответствующим образом (Update Foo или Create Foo), а также form_forFormBuilder выбирает правильное действие. Таким образом, вы можете извлечь код формы в частичное и использовать его для отображения объекта модели (если вы хотите использовать форму для его отображения), обновить его и создать новый экземпляр.
Пол-Себастьян Маноле

13

Как говорит Срджан Пежич, вы можете использовать

<%= f.submit 'name', :class => 'button' %>

или новый синтаксис, который будет:

<%= f.submit 'name', class: 'button' %>

9

Решение при использовании form_with помощник

Для тех, кто использует Rails 5.2, с form_withпомощником: не добавляйте запятую !

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

Скриншот без запятой

НТН!


Это сработало для rails 6, но синтаксис для полей формы отличается, и это безумие.
Кришнадас ПК

2

По умолчанию Rails 4 использует атрибут 'value' для управления видимым текстом кнопки, поэтому для поддержания разметки в чистоте я бы использовал

<%= f.submit :value => "Visible Button Text", :class => 'class_name' %>

0

оба они работают <%= f.submit class: "btn btn-primary" %>и <%= f.submit "Name of Button", class: "btn btn-primary "%>

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.