Chcę moje Rails 2.3.2 aplikacji do reagowania i generować adresy URL tak:Szyny zasobów REST wykorzystujące to_param pola, która zawiera znaki separatora
/websites/asd.com
/websites/asd.com/dns_records/new
W moim config/routes.rb, mam:
map.resources :websites, :has_many => :dns_records
map.resources :dns_records, :belongs_to => :website
mogę następnie uzyskiwanie dostępu do zasobów, takich jak:
/websites/1
/websites/1/dns_records
Poprzez modyfikację mojego modelu WWW, mogę g ożywić lepsze adresy URL, takie jak:
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
Jednak w przypadku nazw domen zawierających znak "." postaci, Railsy stają się nieszczęśliwe. Uważam, że dzieje się tak dlatego, że "." znak jest zdefiniowany w ActionController :: Routing :: SEPARATORS, który zawiera znaki specjalne do podziału adresu URL. Pozwala to na robienie rzeczy takich jak /websites/1.xml.
SO, czy istnieje czysty sposób na zezwolenie "." znaków w RESTful URLs?
Próbowałem przedefiniować ActionController :: Routing :: SEPARATORS, aby nie uwzględniać ".", Co jest całkowicie złym sposobem na rozwiązanie problemu. Spowoduje to przeniesienie generowanych adresów URL przez dodanie do nich ".: Format".
Wiem również, że mogę dodać: requirements => {: id => regexp} do mojej config/routes.rb w celu dopasowania nazwy domeny zawierającej "." (bez tego params [: id] jest ustawiony na część nazwy domeny przed pierwszym "."), ale to nie pomaga w generowaniu URL/ścieżek RESTfully.
Dziękujemy :) Nick