2010-12-30 11 views
10

Sono un po 'confuso con i percorsi in Rails 3 poiché sto appena iniziando a imparare la lingua. Ho un modulo generato qui:Rails 3 percorsi e utilizzando GET per creare URL puliti?

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

Poi nei miei percorsi:

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" 

Allora, perché al momento della presentazione del modulo faccio ad avere l'URL:?

/città utf8 = ✓ & nome = nome città & commit = Cerca

Quindi la domanda è: come faccio a fare l'URL in un URL pulito come:

/città/townname

Grazie,

Andrew

+0

Cosa si aspetta? –

+0

Siamo spiacenti, ho aggiornato l'ultimo bit affermando cosa mi aspetto che l'url appaia come. –

risposta

6

In primo luogo i percorsi

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

o

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

e 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

Articolo sulla differenza tra POST e GET http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP – Bohdan

+0

Se ciò non è possibile con GET per garantire che eventuali ricerche possano essere memorizzate come segnalibri? Grazie per aver postato questa soluzione! –

+0

Beh, se hai una richiesta GET nell'URL avrai sempre una coppia valore-parametro quindi la richiesta deve essere POST provare una nuova via Ho appena aggiunto – Bohdan

Problemi correlati