Tạo một phương thức ApplicationHelper
như bên dưới.
def active controllers, action_names = nil
class_name = controllers.split(",").any? { |c| controller.controller_name == c.strip } ? "active" : ""
if class_name.present? && action_names.present?
return action_names.split(",").any? { |an| controller.action_name == an.strip } ? "active" : ""
end
class_name
end
Bây giờ hãy sử dụng nó trong các trường hợp sử dụng dưới đây.
1. Đối với tất cả các hành động của bất kỳ bộ điều khiển cụ thể nào
<li class="<%= active('controller_name')%>">
....
</li>
2. Đối với tất cả các hành động của nhiều bộ điều khiển (có dấu phẩy được phân tách)
<li class="<%= active('controller_name1,controller_name2')%>">
....
</li>
3. Đối với hành động cụ thể của bất kỳ bộ điều khiển cụ thể nào
<li class="<%= active('controller_name', 'action_name')%>">
....
</li>
4. Đối với hành động cụ thể của nhiều bộ điều khiển (được phân tách bằng dấu phẩy)
<li class="<%= active('controller_name1,controller_name2', 'action_name')%>">
....
</li>
5. Đối với một số hành động cụ thể của bất kỳ bộ điều khiển cụ thể nào
<li class="<%= active('controller_name', 'index, show')%>">
....
</li>
6. Đối với một số hành động cụ thể của nhiều bộ điều khiển (được phân tách bằng dấu phẩy)
<li class="<%= active('controller_name1,controller_name2', 'index, show')%>">
....
</li>
Hy vọng nó giúp