2010-12-30 23 views
10

Estoy un poco confundido con las rutas en Rails 3 ya que estoy empezando a aprender el idioma. He un formulario generado aquí:Rieles 3 rutas y usando GET para crear URL limpias?

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

Luego, en mis rutas:

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" 

Entonces, ¿por al presentar el formulario puedo obtener la URL:?

/ciudades utf8 = ✓ & name = townname & cometer = Buscar

Entonces la pregunta es ¿cómo puedo hacer que la URL en una URL limpia como:

/ciudades/townname

Gracias,

Andrew

+0

¿Qué espera? –

+0

Lo siento, he actualizado el último bit que indica cómo espero que aparezca la URL. –

Respuesta

6

primer lugar las rutas

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

o

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

y la forma

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

Artículo sobre la diferencia entre POST y GET http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP – Bohdan

+0

¿No debería ser posible con GET para garantizar que las búsquedas se puedan almacenar como marcadores? ¡Gracias por publicar esta solución! –

+0

Bueno, si tiene la solicitud GET en la URL, siempre tendrá un par de parámetros y valores, así que solicite que sea POST intente una nueva ruta. Acabo de agregar – Bohdan

Cuestiones relacionadas