Додайте клас 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',: disabled_with => 'Редагування ...'}. Це піде за назвою кнопки. Це повинно працювати, або, принаймні, це задокументовано.
Srdjan Pejic

3
Зауважте, що вам потрібно явно передати рядок ("назва кнопки тут") як перший аргумент submit, щоб використовувати хеш класу, як у відповіді вище. Якщо у вас немає цього рядка, ви отримаєте повідомлення про помилку.
thewillcole

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ви вказали) із такими назвами:

  • Оновіть ім’я моделі

  • Створіть ім’я моделі
    (де model_name ім'я моделі ешафота)


13
Незважаючи на те, що менше голосів, ніж обрана відповідь, це рішення, яке більшість людей захоче використати.
IAmNaN

3
Це те, що я намагався знайти
Sandeep Garg

1
Корисно та дозволяє додавати атрибут HTML ("id" або "class", як у прикладі), не змінюючи стандартний текст кнопки, створений Rails.
TK-421

1
IMO це найкраща відповідь, оскільки він зберігає поведінку динамічного призначення тексту кнопці ("Створити" чи "Оновити") на основі дії контролера
шістдесят біт

Однозначно, як сказав @ sixty4bit. Потрібно встановити текст кнопки у файлах перекладу, щоб форму можна було повторно використовувати в різних діях контролера, тобто "створити коментар" проти "оновити коментар". Дивіться цю відповідь - stackoverflow.com/a/18255633/5355691
Джарвіс Джонсон

26

Рейки 4 та "первинна" кнопка завантаження 3

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

Виходить щось на кшталт:

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


2
Це насправді найкраще, тому що, якщо вказати nilім'я, зберігається поведінка помічника за замовчуванням, де, якщо він знайде змінну екземпляра для об'єкта, який створюється / відображається, наприклад @person, він буде називати відповідну кнопку (Оновити Foo або Створити Foo), а також form_forFormBuilder вибирає правильну дію. Таким чином, ви можете витягнути код форми в частковий і використовувати його для відображення об'єкта моделі (якщо ви хочете використовувати форму для його відображення), оновити його і створити новий екземпляр.
Пол-Себастьян Маноле

13

Як каже Серджан Пежич, ви можете використовувати

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

або новий синтаксис, який би:

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

9

Рішення при використанні форм_з помічником

Для тих, хто використовує Rails 5.2 з form_withпомічником: не додайте коми !

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

Знімок екрана без коми

HTH!


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.