Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีใช้ข้อความแฟลชใน Rails

ข้อความแฟลชคืออะไร

ข้อความแฟลชเป็นวิธีการสื่อสารข้อมูลกับผู้ใช้แอปพลิเคชัน Rails ของคุณ เพื่อให้พวกเขาทราบว่าเกิดอะไรขึ้นจากการกระทำของพวกเขา

ข้อความตัวอย่าง :

  • “เปลี่ยนรหัสผ่านอย่างถูกต้อง” (ยืนยัน)
  • “ไม่พบผู้ใช้” (ข้อผิดพลาด)

คุณตั้งค่าข้อความแฟลชเหล่านี้ในคอนโทรลเลอร์ของคุณ จากนั้นจึงแสดงผลในมุมมองของคุณ ผู้ใช้ของคุณสามารถดำเนินการตามนั้นได้

มาเรียนรู้กันว่ามันทำงานอย่างไร!

วิธีใช้ข้อความแฟลช

คุณสามารถทำงานกับข้อความแจ้งเตือนเหล่านี้ได้โดยใช้ flash วิธีการช่วยเหลือ

มันทำงานเหมือนแฮชทับทิมมาก

วัตถุแฟลชมีเมธอดเช่น keys , any? หรือ each &คุณสามารถเข้าถึงข้อความเฉพาะด้วย [] .

คุณสามารถตั้งค่าข้อความแฟลชประเภทใดได้บ้าง

โดยค่าเริ่มต้น คุณมี :

  • ประกาศ
  • แจ้งเตือน

นี่คือตัวอย่างการใช้งาน :

flash.alert = "User not found."

หรือถ้าคุณต้องการ :

flash[:alert] = "User not found."

(แค่สไตล์ที่แตกต่าง)

คุณสามารถใช้โค้ดนี้ในการดำเนินการของตัวควบคุมได้ เช่น index , create , new , ฯลฯ

ทางนี้อีกทางหนึ่ง :

redirect_to :books_path, notice: "Book not found"

วิธีนี้ทำให้คุณสามารถเปลี่ยนเส้นทางและสร้างข้อความแฟลชได้ในขั้นตอนเดียว

เยี่ยมเลย!

การแจ้งเตือนเทียบกับการแจ้งเตือน

เท่าที่ฉันเข้าใจ ไม่สำคัญหรอกว่าคุณจะใช้ alert หรือ notice .

ใช้อันที่ให้ความรู้สึกเป็นธรรมชาติกับสถานการณ์ของคุณมากขึ้น

ฉันชอบคิดเกี่ยวกับ alert เป็นข้อความแสดงข้อผิดพลาด &notice เป็นข้อความยืนยัน

การแยกส่วนจะช่วยให้คุณจัดรูปแบบได้แตกต่างออกไป

ตัวอย่างเช่น :

คุณสามารถแสดงการแจ้งเตือนเป็นสีแดง &ประกาศเป็นสีเขียว

คุณยังสามารถสร้างประเภทแฟลชของคุณเองได้โดยใช้ add_flash_types วิธีการควบคุม

ถูกใจสิ่งนี้ :

class ApplicationController
  add_flash_types :info, :error, :warning
end

ฉันชอบทำสิ่งต่าง ๆ ให้เรียบง่าย ฉันจึงยึดติดกับประเภทในตัว 🙂

การแสดงข้อความแฟลช

ข้อความแฟลชจะไม่แสดงโดยอัตโนมัติ

คุณต้องแสดงผลภายในมุมมองใดมุมมองหนึ่งเพื่อให้ผู้ใช้มองเห็นได้

ลองเพิ่มสิ่งนี้ลงในเลย์เอาต์แอปพลิเคชันของคุณ

นี่คือตัวอย่างโค้ด :

<% flash.each do |type, msg| %>
  
    <%= msg %>
  
<% end %>

วางไว้ที่ใดก็ตามที่คุณต้องการให้แสดงการแจ้งเตือน ปกติจะอยู่ด้านบนสุดของหน้า ใต้แถบเมนู

จำไว้ :

เมื่อคุณแสดงข้อความแล้ว ข้อความนั้นจะถูกลบออกจาก flash จึงไม่ปรากฏอีก

การจัดรูปแบบการแจ้งเตือนและข้อความแจ้งเตือนของคุณ

ข้อความ Flash ไม่มีการออกแบบหรือรูปแบบในตัว

วิธีแก้ปัญหา?

หากคุณใช้ Bootstrap คุณสามารถใช้ "alert alert-info" คลาส CSS เพื่อทำให้ข้อความแฟลชดูดี

ตัวอย่าง :

<% flash.each do |type, msg| %>
  
    <%= msg %>
  
<% end %>

หน้าตาเป็นแบบนี้ :

วิธีใช้ข้อความแฟลชใน Rails

หากคุณไม่ได้ใช้ Bootstrap คุณสามารถเขียน CSS ของคุณเองเพื่อให้มีลักษณะตามที่คุณต้องการ

ข้อความแฟลชจะแสดงผลเมื่อใด

ข้อความ Flash จะถูกลบออกเฉพาะในการดำเนินการควบคุมครั้งต่อไปของคุณ หลังจากที่แสดงข้อความเหล่านั้น

ผลกระทบ :

  • หากคุณ redirect_to แล้วเรนเดอร์ flash ข้อความที่ดี
  • หากคุณ redirect_to &อย่าแสดงข้อความ ข้อความจะติดอยู่ที่ flash แฮช
  • หากคุณ render ในการดำเนินการเดียวกันกับที่คุณกำลังตั้งค่า flash ข้อความว่า flash ข้อความจะพร้อมใช้งานแต่จะไม่ถูกลบ ดังนั้นข้อความจะยังคงอยู่ &อาจแสดงสองครั้ง

ดังนั้น…

จะทำอย่างไรถ้าคุณต้องการตั้งค่า ข้อความแฟลชสำหรับการทำงานปัจจุบัน ?

นั่นคือที่ที่ flash.now เข้ามาเลย!

นี่คือตัวอย่าง :

def index
  @books = Book.all

  flash.now[:notice] = "We have exactly #{@books.size} books available."
end

สิ่งนี้จะแสดง index มุมมอง

notice ข้อความจะแสดงและลบออกจาก flash ดังนั้นจะไม่แสดงซ้ำ 2 ครั้ง

กล่าวอีกนัยหนึ่ง :

คุณจำเป็นต้องใช้ flash.now . เท่านั้น หากคุณกำลังจะ render แทนที่จะเปลี่ยนเส้นทาง

สรุป

คุณได้เรียนรู้เกี่ยวกับข้อความแฟลชใน Rails และวิธีใช้งานอย่างถูกต้องแล้ว!

อย่างไรก็ตาม ข้อความแฟลชไม่เหมือนกับข้อผิดพลาดในการตรวจสอบความถูกต้อง การตรวจสอบจะเชื่อมโยงกับอ็อบเจ็กต์ model และคุณเข้าถึงข้อความตรวจสอบเหล่านี้ด้วย errors เมธอด เช่น @user.errors .

ตอนนี้ถึงตาคุณแล้วที่จะนำสิ่งนี้ไปปฏิบัติโดยการเขียนโค้ดบางส่วน

ขอบคุณสำหรับการอ่าน!