2010-12-30 28 views
10

Tôi hơi bối rối với các tuyến đường trong Rails 3 vì tôi mới bắt đầu học ngôn ngữ. Tôi đã là một hình thức tạo ra ở đây:Rails 3 tuyến đường và sử dụng GET để tạo URL sạch?

<%= form_tag towns_path, :method => "get" do %> 
    <%= label_tag :name, "Search for:" %> 
    <%= text_field_tag :name, params[:name] %> 
    <%= submit_tag "Search" %> 
    <% end %> 

Sau đó, trong các tuyến đường của tôi:

get "towns/autocomplete_town_name" 
    get "home/autocomplete_town_name" 

    match 'towns' => 'towns#index' 
    match 'towns/:name' => 'towns#index' 

    resources :towns, :module => "town" 
    resources :businesses, :module => "business" 

    root :to => "home#index" 

Vậy tại sao khi nộp mẫu đơn để tôi có được URL:

/thị trấn utf8 = ✓ & name = townname & commit = Tìm kiếm

Vì vậy, câu hỏi là làm thế nào để làm cho url đó vào một url sạch như:

/thị trấn/townname

Cảm ơn,

Andrew

+0

bạn đang mong đợi gì? –

+0

Xin lỗi, tôi đã cập nhật bit cuối cùng nêu rõ những gì tôi mong đợi url xuất hiện dưới dạng. –

Trả lời

6

Trước hết các tuyến đường

resources :towns do 
    post 'townname', :on => :collection 
end 

hoặc

match "town/:name" => "towns#index", :as => :townname, :via => [:post], :constraints => { :name => /[A-Za-z]/ } 

và hình thức

<%= form_tag townname_towns_path, :method => "post" do %> 
    <%= label_tag :name, "Search for:" %> 
    <%= text_field_tag :name, params[:name] %> 
    <%= submit_tag "Search" %> 
<% end %> 
+2

Bài viết về sự khác biệt giữa POST và GET http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP – Bohdan

+0

Nếu điều này không thể thực hiện được với GET để đảm bảo mọi tìm kiếm có thể được lưu dưới dạng dấu trang? Cảm ơn bạn đã đăng giải pháp này! –

+0

Vâng, nếu bạn có yêu cầu GET trong URL, bạn sẽ luôn có cặp tham số-giá trị để yêu cầu phải POST thử tuyến mới Tôi vừa thêm – Bohdan

Các vấn đề liên quan