2011-03-05 16 views
13

La domanda ha molti commenti.Ignora metodi helper route

Un URL "domande/123" mostra una domanda.

Un URL:

"domande/123 # risposta-345"

mostra una domanda e mette in evidenza una risposta. 345 - è l'id del modello Answer, "answer-345" è l'attributo id dell'elemento HTML.

ho bisogno di ignorare "answer_path (a)" metodo per ottenere

"domande/123 # risposta-345"

invece di

"risposte/345 "

Come fare?

risposta

16

Tutti i metodi di supporto URL e percorso accettano argomenti facoltativi.
Quello che stai cercando è l'argomento anchor:

question_path(123, :anchor => "answer-345") 

E 'documentato nel URLHelper#link_to examples.

Usando questo argomento, si dovrebbe essere in grado di creare un answer_path aiutante via:

module ApplicationHelper 

    def answer_path(answer) 
    question_path(answer.question, :anchor => "answer-#{answer.id}") 
    end 

end 
+0

No, ne ho bisogno. answer_path dovrebbe in realtà puntare al suo percorso della domanda e aggiungere anche hash-part. – AntonAL

+0

Aggiornamento della risposta con un metodo di supporto. Spero che funzioni per te. – rubiii

+1

Grazie. Dove dovrebbe essere posizionato questo metodo, per avere la precedenza rispetto a default_path? – AntonAL

0

Offrendo una soluzione che copre più aree (funziona non solo in vista, ma anche nel controllo/console)

module CustomUrlHelper 
    def answer_path(answer, options = {}) 
    options.merge!(anchor: "answer-#{answer.id}") 
    question_path(answer.question, options) 
    end 
end 

# Works at Rails 4.2.6, for earliers versions see http://stackoverflow.com/a/31957323/474597 
Rails.application.routes.named_routes.url_helpers_module.send(:include, CustomUrlHelper) 
Problemi correlati