Bạn có thể tạo ra một phương pháp mới current_path?
trong bạn ApplicationHelper
:
def current_path?(*paths)
return true if paths.include?(request.path)
false
end
đèo trong một hoặc nhiều đường dẫn và nó trả về true nếu có khớp với đường dẫn hiện tại của người dùng:
current_path?('/user/new')
current_path?(root_path)
current_path?(new_user_path, users_path '/foo/bar')
Hoặc, bạn có thể tạo ra một phương pháp current_request?
helper mới để kiểm tra bộ điều khiển Rails + hành động:
def current_request?(*requests)
return true if requests.include?({
controller: controller.controller_name,
action: controller.action_name
})
false
end
đèo trong một hoặc nhiều bộ điều khiển + hành động và nó trả về true nếu bất kỳ trận đấu yêu cầu hiện tại của người dùng:
current_request?(controller: 'users', action: 'new')
current_request?({controller: 'users', action: 'new'}, {controller: 'users', action: 'create'})
== CẬP NHẬT ==
Ok, tôi quyết định làm bằng current_request?
một chút ít tiết bằng cách không req uiring mà bạn gõ ra bộ điều khiển khi bạn đang cố gắng để phù hợp với nhiều hành động:
def current_request?(*requests)
requests.each do |request|
if request[:controller] == controller.controller_name
return true if request[:action].is_a?(Array) && request[:action].include?(controller.action_name)
return true if request[:action] == controller.action_name
end
end
false
end
Bây giờ bạn có thể làm điều này:
current_request?(controller: 'users', action: ['new', 'create'])
Nguồn
2014-05-18 23:26:05
Bạn có thể thêm lỗi cho câu hỏi của bạn, bao gồm cách bạn đang sử dụng CURRENT_PAGE ? – AMIT
Tôi chỉnh sửa câu hỏi của mình để bao gồm lệnh gọi 'current_page? '. Tôi không gặp lỗi. Nó chỉ trả về sai. –