เพิ่มคลาส CSS ไปที่ <% = f.submit%>


คำตอบ:


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

สิ่งนี้ควรทำ หากคุณได้รับข้อผิดพลาดโอกาสที่คุณจะไม่ได้ระบุชื่อ

หรือคุณสามารถจัดสไตล์ปุ่มได้โดยไม่ต้องมีคลาส:

form#form_id_here input[type=submit]

ลองดูเช่นกัน


ยอดเยี่ยม ขอบคุณ Srdjan หนึ่งอยากรู้อยากเห็นเล็ก ๆ น้อย ๆ - ฉันได้ลองใช้disable_withกับปุ่มส่งเหล่านี้ แต่พวกเขาดูเหมือนจะไม่ทำงาน มีเหตุผลที่คุณรู้หรือไม่? +1
sscirrus

3
ลองใช้แฮชสำหรับตัวเลือก: {: class => 'class_name',: disable_with => 'กำลังแก้ไข ... '} นี่จะเป็นไปตามชื่อปุ่ม มันควรจะทำงานหรืออย่างน้อยก็มีการบันทึกไว้เช่นนั้น
Srdjan Pejic

3
โปรดทราบว่าคุณต้องผ่านสตริง ('ชื่อของปุ่มที่นี่') อย่างชัดเจนเพื่อเป็นอาร์กิวเมนต์แรกsubmitในการใช้: hash class เช่นเดียวกับคำตอบข้างต้น หากคุณไม่มีสตริงนั้นคุณจะได้รับข้อความแสดงข้อผิดพลาด
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

  • สร้าง model_name
    (โดยที่ model_name ชื่อของโมเดลนั่งร้าน)


13
แม้จะมีคะแนนโหวตน้อยกว่าคำตอบที่เลือก แต่นี่เป็นวิธีการแก้ปัญหาที่คนส่วนใหญ่ต้องการใช้
IAmNaN

3
นี่คือสิ่งที่ฉันพยายามที่จะหา
Sandeep Garg

1
มีประโยชน์และอนุญาตให้เพิ่มแอตทริบิวต์ HTML ("id" หรือ "class" ตามตัวอย่าง) โดยไม่ต้องเปลี่ยนข้อความปุ่มเริ่มต้นของ Rails ที่สร้างขึ้น
TK-421

1
IMO นี่เป็นคำตอบที่ดีที่สุดเพราะมันจะรักษาพฤติกรรมของการกำหนดข้อความแบบไดนามิกให้กับปุ่ม ("สร้าง" หรือ "อัพเดท") ตามการกระทำของคอนโทรลเลอร์
sixty4bit

แน่นอนว่า @ sixty4bit กล่าว ควรตั้งค่าข้อความปุ่มในไฟล์แปลเพื่อให้สามารถนำแบบฟอร์มกลับมาใช้ใหม่ในการทำงานของคอนโทรลเลอร์ที่แตกต่างกันเช่น 'สร้างความคิดเห็น' vs 'อัพเดตความคิดเห็น' ดูคำตอบนี้ - stackoverflow.com/a/18255633/5355691
Jarvis Johnson

26

ปุ่ม Rails 4 และ Bootstrap 3 "primary"

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

ให้ผลตอบแทนเช่น:

หน้าจอ 2014-01-22_02.24.26.png


2
นี่เป็นสิ่งที่ดีที่สุดเพราะการระบุnilชื่อจะรักษาพฤติกรรมเริ่มต้นของผู้ช่วยซึ่งหากพบตัวแปรอินสแตนซ์สำหรับวัตถุที่กำลังสร้าง / แสดงเช่น@personมันจะตั้งชื่อปุ่มตาม (อัพเดท Foo หรือสร้าง Foo) และform_forFormBuilder เลือกการกระทำที่ถูกต้อง ดังนั้นวิธีนี้คุณสามารถแยกรหัสฟอร์มลงในบางส่วนและใช้เพื่อแสดงวัตถุโมเดล (ถ้าคุณต้องการใช้ฟอร์มเพื่อแสดง) อัปเดตและสร้างอินสแตนซ์ใหม่เช่นกัน
พอล - เซบาสเตียน Manole

13

ดังที่ Srdjan Pejic กล่าวว่าคุณสามารถใช้

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

หรือไวยากรณ์ใหม่ซึ่งจะเป็น:

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

9

วิธีแก้ปัญหาเมื่อใช้ form_with helper

สำหรับผู้ที่ใช้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 "%>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.