Si potrebbe creare un nuovo metodo current_path?
nel ApplicationHelper
:
def current_path?(*paths)
return true if paths.include?(request.path)
false
end
Passo in uno o più percorsi ed è restituisce true se qualsiasi corrisponde al percorso corrente dell'utente:
current_path?('/user/new')
current_path?(root_path)
current_path?(new_user_path, users_path '/foo/bar')
In alternativa, è possibile creare un nuovo metodo current_request?
di supporto per controllare il controller Rails + azione:
def current_request?(*requests)
return true if requests.include?({
controller: controller.controller_name,
action: controller.action_name
})
false
end
Passo in uno o più controller + azione e restituisce true se ogni partita richiesta di corrente dell'utente:
current_request?(controller: 'users', action: 'new')
current_request?({controller: 'users', action: 'new'}, {controller: 'users', action: 'create'})
== AGGIORNAMENTO ==
Ok, ho deciso di fare utilizzando current_request?
un po 'meno prolissa da non req uiring che si digita il controllore quando si sta cercando di abbinare più azioni:
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
Ora si può fare questo:
current_request?(controller: 'users', action: ['new', 'create'])
fonte
2014-05-18 23:26:05
si può aggiungere l'errore alla tua domanda, compreso il modo in uso CURRENT_PAGE ? – AMIT
Ho modificato la mia domanda per includere la mia chiamata 'current_page?'. Non sto ottenendo un errore. Restituisce semplicemente falso. –