2011-12-16 12 views
8

ho un modulo di ricerca sul mio sito che consente agli utenti di effettuare una ricerca per molti aspetti diversi, come città, fascia di prezzo, dimensioni, eccpresentando un rotaie del modulo a un URL "amichevole"

forma deduce quanto a OTTIENI i parametri del modulo sono nell'URL.

essi finiscono per essere abbastanza brutto:?

/Ricerche utf8 = ✓ & city_region = Vancouver & property_type_id = 1 & min_square_footage = 0 & max_square_footage = 15000

(sono in realtà ancora peggiore, perché il i parametri di ricerca fanno parte di un modello così ci sono anche molti codificati ['s e] nell'URL)

invece il modulo deve generare un URL come:

/Ricerche/Vancouver/ufficio? Square_footage = 0-15000

dove alcuni dei parametri sono posti nel percorso URL stesso, mentre altri vengono lasciati nei parametri di query (in un formato leggermente più leggibile).

quale sarebbe il modo migliore per gestire questo in un'applicazione di rotaie? tutto quello che posso pensare sta usando il codice javascript sul modulo di invio per manipolare l'URL a cui il modulo si sottomette.

risposta

1

Tutto ciò che serve è creare un instradamento per questo tipo di pagina.

Se siete on Rails 3:

match '/search(/:city(/:property_type(/:min_square_footage(/:max_square_footage)))' => 'search#index', :as => :search 

(quelle parentesi si riferiscono ad alcune variabili è facoltativo)

Poi si può chiamare nella vista con qualcosa di simile:

= link_to 'Search', search_url(:city_region => 'Vancouver', :property_type_id => 5, :min_square_footage => 0, :max_square_footage => 15000) 
+0

Nel caso in cui non fosse chiaro, l'URL finale sarebbe simile a questa: http://myapp.com/search/vancouver/5/0/15000 –

+2

Tranne che non ho a che fare con un collegamento: la pagina esegue il rendering di un modulo, che l'utente compila e l'invio di tale modulo è ciò che genera l'URL (il modulo utilizza GET anziché POST). – emh

1

TLDR: l'unico modo per farlo è utilizzare un'ajax nel modulo e quindi un reindirizzamento.

Impostare l'evento click sul pulsante di ricerca per attivare un post di modulo Ajax su un metodo controller.

Quindi usa la magia nella risposta di Jack e chiama un reindirizzamento usando il tuo URL amico che generi ... Ricorda solo che se vuoi che Google trovi l'URL amichevole devi averli su una pagina da qualche parte in modo statico. Se non ti interessa il SEO, allora la soluzione dovrebbe essere piuttosto semplice.

6

È possibile aggiungere al controller questa condizione:

if params[:utf8] 
    redirect_to "/searches/#{params[:city_region]}/..." 
end 
Problemi correlati