2009-03-01 35 views
11

Ngay bây giờ tôi có một chuyển hướng một phần trông như thế này (nút x10) ...Đường ray: Cách thanh lịch để xử lý điều hướng?

<% if current_controller == "territories" %> 
    <li><%= link_to "Territories", {:controller => 'territories'}, :class => 'active' %></li> 
<% else %> 
    <li><%= link_to "Territories", {:controller => 'territories'} %></li> 
<% end %> 
<% if current_controller == "contacts" %> 
    <li><%= link_to "Contacts", {:controller => 'Contacts'}, :class => 'active' %></li> 
<% else %> 
    <li><%= link_to "Contacts", {:controller => 'Contacts'} %></li> 
<% end %> 

Có một giải pháp thanh lịch hơn/DRY để làm điều này?

Trả lời

8

Trong một tĩnh mạch tương tự như những gì Chuck nói:

<% TARGETS.each do |target| %> 
    <li> 
    <%= link_to target.humanize, 
     { :controller => target }, 
     class => ('active' if current_controller == target)) %> 
    </li> 
<% end %> 
+0

và MỤC TIÊU là gì ?? – DaMainBoss

+0

MỤC TIÊU LÀ GÌ? Ngoài ra, bài đăng của bạn có lỗi cú pháp. – Dewayne

1

Khám phá link_to_unless_current. Không chính xác những gì bạn yêu cầu, nhưng nó gần.

Ngoài ra, bạn có thể đặt loại logic này trong trình trợ giúp để trừu tượng hóa nó ra khỏi chế độ xem.

3

Thật dễ dàng để biết nơi có sự lặp lại ở đó. Đó là tất cả dạng chung:

<% if current_controller == XXXXX %> 
    <li><%= link_to XXXXX, {:controller => XXXXX}, CLASS %></li> 
<% else %> 
    [do the same stuff minus ":class => 'active'"] 
<% end %> 

Vì vậy, chúng tôi muốn XXXXX và CLASS là biến (vì đó là những thứ chỉ thay đổi) và phần còn lại có thể là mẫu đơn giản.

Vì vậy, chúng ta có thể làm điều gì đó như thế này:

%w(Contacts Territories).each |place| 
    <% class_hash = current_controller == place ? {:class => 'active'} : {} 
    <li><%= link_to place, {:controller => place}, class_hash)</li> 
1

Một phiên bản hơi khác nhau w/link_to_unless_current:

<ul> 
<% links.each do |link| -%> 
<li><%= link_to_unless_current link.humanize, { :controller => target } %></li> 
<% end -%> 
</ul> 

Một nguồn tài nguyên tốt cho những thứ như thế này là tài liệu đường ray.

2

Khám phá rails-widgets trên github. Nó cung cấp một tấn người trợ giúp thuận tiện cho công cụ giao diện người dùng đường ray (tabnavs, tooltips, tableizers, hiển thị ẩn chuyển đổi, thanh tiến trình css đơn giản) ngoài điều hướng.

Sau đây là các docs

1

Kiểm tra các simple-navigation plugin. Đó là plugin "dễ sử dụng" cho việc tạo điều hướng cho các ứng dụng đường ray của bạn.

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