2012-02-22 26 views
24

Tôi tự hỏi thực tiễn tốt nhất để hiển thị thông điệp flash là gì. Hai cách chính tôi đã thấy đang sử dụng thứ gì đó giống như giàn giáo này được tạo mãPhương pháp thực hành hiển thị thông điệp flash tốt nhất

<p id="notice"><%= notice %></p> 

hoặc đặt mã như thế này trong tiêu đề ứng dụng của bạn.

<% if !flash.empty? %> 
    <div id="flash"> 
     <% flash.keys.each do |k| %> 
      <div class="<%= k %>"> 
       <%= flash[k] %> 
      </div> 
     <% end %> 
    </div> 
<% end %> 

Dường như với tôi phương pháp đầu tiên bổ sung tính linh hoạt hơn trong khi phương pháp thứ hai cải thiện khả năng đọc mã và loại bỏ sự thừa. Có một phương pháp hầu hết các nhà phát triển đường ray thích? Là một câu hỏi phụ như thế nào giàn giáo thực hiện thông báo? Nó chỉ là một người trợ giúp truy cập băm flash? Tại sao phải trải qua sự cố khi sử dụng trình trợ giúp khi bạn có thể trực tiếp sử dụng băm flash? Cảm ơn

Trả lời

55

tôi đang làm nó theo cách này:

<% flash.each do |key, value| %> 
    <%= content_tag :div, value, class: "flash #{key}" %> 
<% end %> 
+0

Điều này có cung cấp bất kỳ lợi ích cụ thể nào ngoài các dòng mã không? Cảm ơn – Steve

+1

Có, nó làm giảm số lượng dòng mã và cải thiện khả năng đọc của mã. – zolter

+1

")" sau khi "flash # {key}" không cần thiết, nó ném thông báo lỗi –

2

Tại sao không đặt phương thức thứ hai vào chức năng trợ giúp để nó không ảnh hưởng đến khả năng đọc mã trên bố cục?

+0

Tôi chỉ phải sử dụng nó một lần trong tiêu đề ứng dụng của mình nhưng nếu điều đó lộn xộn hơn, tôi cho rằng tôi sẽ đặt nó trong một người trợ giúp riêng biệt. Bạn có biết cách trình trợ giúp thông báo hoạt động không, bởi vì nó xuất hiện giàn giáo đã làm điều này cho bạn bằng cách sử dụng trình trợ giúp thông báo đó. Cảm ơn – Steve

+0

Bạn có thể sử dụng nhiều hơn một lần cho các dự án khác nhau, nó giống như tất cả những người trợ giúp Rails mà bạn sử dụng một lần cho mỗi ứng dụng như csrf_mete_tags helper. – fjyaniez

30

Gọi một phần tiếp tục của bạn application.html.erb thậm chí sạch ..

<%= render 'shared/flash_messages' if !flash.empty? %> 

.. và trong một phần làm điều gì đó giống như những gì @zolter đề cập:

<div id="flash_messages"> 
    <% flash.each do |key, value| %> 
    <%= content_tag(:div, value, :class => "flash #{key}") %> 
    <% end %> 
</div> 
+2

Nhưng bạn có thể đặt mọi thứ vào một phần rồi. Như tôi đã luôn luôn hiểu bạn chủ yếu chỉ muốn ném những thứ trong một phần mà được lặp đi lặp lại trong suốt ứng dụng của bạn. Nếu có những đoạn mã lớn thì hãy đặt những phần đó vào một phần, nhưng điều này có đủ điều kiện không? Tôi không biết và tôi không có đủ kinh nghiệm để thực hiện cuộc gọi đó nhưng tôi không thấy điểm tạo ra một phần mới cho nó. Cảm ơn – Steve

+3

[Một cách để sử dụng partials là đối xử với chúng như là tương đương với các chương trình con: như một cách để di chuyển chi tiết ra khỏi chế độ xem để bạn có thể nắm bắt những gì đang diễn ra dễ dàng hơn.] (Http://guides.rubyonrails.org /layouts_and_rendering.html#using-partials-to-simplify-views) – user664833

Các vấn đề liên quan