2011-12-16 8 views
8

bir "dost" URL'ye oluşturani kullanıcı vb şehir, fiyat aralığı, boyut gibi pek çok farklı yönleri ile arama yapmanızı sağlar sitemde arama formuna sahip

formu olarak gönderir Bir GET, böylece form parametreleri URL’de. ?

onlar oldukça çirkin olma sonunda:

/arar utf8 = ✓ & city_region = vancouver & property_type_id = 1 & min_square_footage = 0 & max_square_footage = 15000

(onlar çünkü aslında daha kötüsün Arama parametreleri bir modelin parçası olduğundan, URL'de de kodlanmış ['ler] ve' ler 'vardır]

Bunun yerine yapmak istediğim form aşağıdaki gibi bir URL oluşturur:

/arar/vancouver/ofis? Square_footage = diğerleri sorgu parametreleri sol ise parametrelerin bazıları (biraz daha okunabilir formatta) URL yolu kendisi yerleştirilir 0-15000

.

Bir ray uygulamasında bunu işlemenin en iyi yolu ne olurdu? Tüm düşünebildiğim, formun gönderdiği URL'yi değiştirmek için formda javascript kodu kullanıyor.

cevap

1

Tek ihtiyacınız olan bu tür bir sayfa için bir yönlendirme oluşturmaktır.

Rails 3 iseniz:

= link_to 'Search', search_url(:city_region => 'Vancouver', :property_type_id => 5, :min_square_footage => 0, :max_square_footage => 15000) 
:
match '/search(/:city(/:property_type(/:min_square_footage(/:max_square_footage)))' => 'search#index', :as => :search 

Sonra

Eğer böyle bir şey ile görünümünde diyebilirsin (o parantezler bazı değişkenlerin isteğe bağlı olmanın bakın)

+0

, son URL şöyle olacaktır: http://myapp.com/search/vancouver/5/0/15000 –

+2

Bir bağlantıyla uğraşmamın dışında - sayfa, kullanıcının doldurduğu bir form oluşturur ve bu formu gönderen URL'yi oluşturur (form POST yerine GET kullanır). – emh

1

TLDR: Bunu yapmanın tek yolu, formdaki ajax ve ardından yönlendirme kullanmaktır.

Ajax form iletisini bir denetleyici yöntemine tetiklemek için arama düğmenizdeki tıklama etkinliğini ayarlayın.

Ardından, Jack'in cevabındaki sihrini kullanın ve ürettiğiniz arkadaşça URL'nizi kullanarak bir yönlendirme çağırın. Sadece arkadaşınızın URL'lerini bulmak için google'ı kullanmak istiyorsanız, bunları statik olarak bir yere yerleştirmeniz gerektiğini unutmayın. SEO ile ilgilenmiyorsanız, çözüm oldukça basit olmalıdır.

6

Sen kontrolöre bu koşul ekleyebiliriz: belli değildi durumda

if params[:utf8] 
    redirect_to "/searches/#{params[:city_region]}/..." 
end 
İlgili konular