Rails 3路由并使用GET创建干净的URL?

Har*_*and 10 routes get ruby-on-rails ruby-on-rails-3

我对Rails 3中的路线感到有点困惑,因为我刚开始学习这门语言.我在这里生成了一个表单:

  <%= form_tag towns_path, :method => "get" do %>
    <%= label_tag :name, "Search for:" %>
    <%= text_field_tag :name, params[:name] %>
    <%= submit_tag "Search" %>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

然后在我的路线:

  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"
Run Code Online (Sandbox Code Playgroud)

那么为什么在提交表单时我会得到以下网址:

/城镇?= UTF8&✓名称= townname&提交=搜索

所以问题是我如何将这个网址变成一个干净的网址:

/镇/ townname

谢谢,

安德鲁

Boh*_*dan 6

首先是路线

resources :towns do
  post 'townname', :on => :collection
end 
Run Code Online (Sandbox Code Playgroud)

要么

match "town/:name" => "towns#index", :as => :townname, :via => [:post], :constraints => { :name => /[A-Za-z]/ }
Run Code Online (Sandbox Code Playgroud)

和形式

<%= form_tag townname_towns_path, :method => "post" do %>
  <%= label_tag :name, "Search for:" %>
  <%= text_field_tag :name, params[:name] %>
  <%= submit_tag "Search" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 有关POST和GET之间差异的文章http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP (2认同)