Вы можете создать новый метод current_path?
в вашем ApplicationHelper
:
def current_path?(*paths)
return true if paths.include?(request.path)
false
end
Передайте один или несколько путей, и он вернет true, если они совпадают с текущим путем пользователя:
current_path?('/user/new')
current_path?(root_path)
current_path?(new_user_path, users_path '/foo/bar')
Или вы можете создать новый вспомогательный метод current_request?
для проверки действия контроллера Rails +:
def current_request?(*requests)
return true if requests.include?({
controller: controller.controller_name,
action: controller.action_name
})
false
end
Передайте одно или несколько действий контроллер +, и оно вернет истину, если они соответствуют текущему запросу пользователя:
current_request?(controller: 'users', action: 'new')
current_request?({controller: 'users', action: 'new'}, {controller: 'users', action: 'create'})
== UPDATE ==
Хорошо, я решил сделать использование current_request?
немного менее многословным, не требуя, чтобы вы вводили контроллер, когда пытаетесь сопоставить несколько действий:
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
Теперь вы можете сделать это:
current_request?(controller: 'users', action: ['new', 'create'])