2011-12-16 15 views
8

tôi có một hình thức tìm kiếm trên trang web của tôi cho phép một người dùng để tìm kiếm theo nhiều khía cạnh khác nhau như thành phố, phạm vi giá cả, kích thước, vvgửi một đường ray hình thành đến một URL "thân thiện"

hình thức nộp như GET để các tham số biểu mẫu nằm trong URL.

họ kết thúc được khá xấu xí:

/tìm kiếm utf8 = ✓ & city_region = vancouver & property_type_id = 1 & min_square_footage = 0 & max_square_footage = 15000

(họ đang thực sự còn tồi tệ hơn vì các tham số tìm kiếm là một phần của mô hình, do đó, cũng có rất nhiều mã hóa [và s] trong URL cũng vậy)

những gì tôi muốn làm thay vào đó là biểu mẫu tạo URL như:

/tìm kiếm/vancouver/văn phòng? Square_footage = 0-15000

nơi một số các tham số được đặt vào đường dẫn URL thân trong khi những người khác còn lại trong các tham số truy vấn (trong một định dạng dễ đọc hơn một chút).

cách tốt nhất để xử lý điều này trong ứng dụng đường ray là gì? tất cả tôi có thể nghĩ là sử dụng mã javascript trên biểu mẫu gửi để thao tác URL mà biểu mẫu gửi đến.

Trả lời

1

Tất cả những gì bạn cần là tạo định tuyến cho loại trang này.

Nếu bạn đang ở trên Rails 3:

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

(những dấu ngoặc đơn tham khảo một số các biến là không bắt buộc)

Sau đó, bạn có thể gọi nó theo quan điểm của bạn với một cái gì đó như:

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

Trong trường hợp đó là không rõ ràng, URL cuối sẽ trông như thế này: http://myapp.com/search/vancouver/5/0/15000 –

+2

Trừ khi tôi không xử lý liên kết - trang hiển thị biểu mẫu, người dùng điền vào và gửi biểu mẫu đó là thứ tạo URL (biểu mẫu sử dụng GET thay vì POST). – emh

1

TLDR: Cách duy nhất bạn có thể làm điều này là sử dụng ajax trên biểu mẫu và sau đó chuyển hướng.

Thiết lập sự kiện nhấp chuột trên nút tìm kiếm của bạn để kích hoạt bài đăng biểu mẫu ajax cho một phương thức điều khiển.

Sau đó sử dụng phép thuật trong câu trả lời của Jack và gọi chuyển hướng bằng url thân thiện bạn tạo ... Chỉ cần nhớ rằng nếu bạn muốn google tìm url thân thiện của bạn, bạn cần phải đặt chúng trên trang ở đâu đó tĩnh. Nếu bạn không quan tâm đến SEO thì giải pháp của bạn sẽ khá đơn giản.

6

Bạn có thể thêm vào điều khiển của bạn tình trạng này:

if params[:utf8] 
    redirect_to "/searches/#{params[:city_region]}/..." 
end 
Các vấn đề liên quan