2010-12-30 14 views
10

Ich bin ein wenig verwirrt mit den Routen in Rails 3, wie ich nur die Sprache zu lernen bin ab. Ich habe ein Formular hier erzeugt:Rails 3 routet und mit GET saubere URLs erstellen?

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

Da ist in meiner Route:

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" 

Warum also, wenn Sie das Formular abschicken erhalte ich die URL:

/Städte UTF8 = ✓ & name = townname & commit = Suchen

Die Frage ist also, wie kann ich diese URL in eine saubere URL wie:

/Städte/townname

Danke,

Andrew

+0

Was erwarten Sie? –

+0

Sorry, ich habe das letzte Bit aktualisiert sagen, was erwarte ich, dass die URL erscheinen. –

Antwort

6

Zunächst werden die Routen

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

oder

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

und die Form

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

Artikel über Unterschied zwischen POST und GET http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP – Bohdan

+0

Sollte dies nicht mit GET möglich sein, alle Suchanfragen, um sicherzustellen, können als Lesezeichen gespeichert werden? Vielen Dank, dass Sie diese Lösung veröffentlicht haben! –

+0

Nun, wenn Sie erhalten haben Anfrage in URL Sie immer Parameter-Wert-Paar haben werden so Anfrage POST versuchen Ich habe gerade neue Route sein müssen nur hinzugefügt – Bohdan

Verwandte Themen