我想我的Rails 2.3.2應用程序響應並生成URL,像這樣:Rails的RESTful資源
/websites/asd.com
/websites/asd.com/dns_records/new
在我的config/routes.rb中,我有:
map.resources :websites, :has_many => :dns_records
map.resources :dns_records, :belongs_to => :website
我可以再訪問諸如:
/websites/1
/websites/1/dns_records
通過修改我的網站模式,我可以摹嵌入更好的網址如下:
class Website < ActiveRecord::Base
def to_param
domain_name
end
...
end
# app/views/websites/index.erb
<% @websites.each do |w| %>
<%= link_to "Show #{w}", website_path(w) %>
<% end %>
# Produces a link to:
/websites/example_without_periods_in_name
但是,對於包含'。'的域名,人物,Rails變得不快樂。我相信這是因爲'。'字符在ActionController :: Routing :: SEPARATORS中定義,其中列出了用於分割URL的特殊字符。這可以讓你做像/websites/1.xml這樣的東西。
那麼,有沒有一種乾淨的方式來允許'。' RESTful URL中的字符?
我試着重新定義ActionController :: Routing :: SEPARATORS不包含'。',這是一個完全不好的方法來解決問題。這通過向他們附加「。:format」來混淆生成的URL。
我也知道我可以將:requirements => {:id => regexp}添加到我的config/routes.rb中,以匹配包含'。'的域名。 (沒有這個,在第一個'。'之前,params [:id]被設置爲域名的一部分),但這無助於RESTful地生成URL /路徑。
非常感謝:) 尼克