2011-12-16 12 views
8

Mam formularz wyszukiwania po mojej stronie, która pozwala użytkownikowi na wyszukiwanie według różnych aspektów, takich jak miasto, przedziale cenowym, wielkość itpzłożenie szyny tworzą na „przyjazne” URL

forma podnosi jako GET, więc parametry formularza znajdują się w adresie URL.

one skończyć się dość brzydki:

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

(są właściwie jeszcze gorzej, ponieważ parametry wyszukiwania są częścią modelu, więc w adresie URL jest dużo zakodowanych [i-s]).

Zamiast tego chciałbym, aby formularz wygenerował adres URL, taki jak:

/pytania/Vancouver/biuro? Powierzchnia_w_stopach = 0-15000

gdzie niektóre parametry są umieszczane na samej ścieżce URL, podczas gdy inni pozostają w parametrach zapytań (w formacie nieco bardziej czytelny).

jaki byłby najlepszy sposób na obsłużenie tego w aplikacji szyny? wszystko, o czym myślę, to użycie kodu javascript na formularzu, aby manipulować adresem URL, do którego przesyła formularz.

Odpowiedz

1

Wystarczy utworzyć trasę dla tego rodzaju strony.

Jeśli on Rails 3:

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

(te nawiasach odnoszą się niektóre zmienne są opcjonalne)

Następnie można wywołać go w widoku z czymś takim:

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

W przypadku nie było jasne, czy adres URL końcowy będzie wyglądać następująco: http://myapp.com/search/vancouver/5/0/15000 –

+2

Poza tym, że nie mam do czynienia z łączem - strona renderuje formularz, który wypełnia użytkownik, a przesłanie tego formularza generuje adres URL (formularz używa GET zamiast POST). – emh

1

TLDR: Jedynym sposobem, aby to zrobić, jest użycie ajaxa w formularzu, a następnie przekierowania.

Skonfiguruj zdarzenie click na przycisku wyszukiwania, aby wywołać formularz formularza ajax do metody kontrolera.

Następnie użyj magii w odpowiedzi Jacka i zadzwoń do przekierowania za pomocą przyjaznego adresu URL, który wygenerujesz ... Pamiętaj tylko, że jeśli chcesz, aby google szukał Twojego przyjaznego adresu URL, musisz mieć je na stronie statycznie. Jeśli nie zależy Ci na SEO, rozwiązanie powinno być proste.

6

Można dodać do kontrolera tego warunku:

if params[:utf8] 
    redirect_to "/searches/#{params[:city_region]}/..." 
end 
Powiązane problemy