Voglio che i miei Rails 2.3.2 app per rispondere e generare URL in questo modo:Rails risorse RESTful utilizzando to_param per un campo che contiene caratteri separatori
/websites/asd.com
/websites/asd.com/dns_records/new
Nel mio config/routes.rb, ho:
map.resources :websites, :has_many => :dns_records
map.resources :dns_records, :belongs_to => :website
posso quindi accedere alle risorse come ad esempio:
/websites/1
/websites/1/dns_records
modificando il mio modello sito web, posso g enerare gli URL migliori in questo modo:
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
Tuttavia, per i nomi di dominio che contengono '.' personaggi, Rails diventa infelice. Credo che questo sia dovuto al "." il carattere è definito in ActionController :: Routing :: SEPARATORS, che elenca caratteri speciali su cui suddividere l'URL. Questo ti permette di fare cose come /websites/1.xml.
SO, c'è un modo pulito per consentire '.' caratteri negli URL RESTful?
Ho provato a ridefinire ActionController :: Routing :: SEPARATORS per non includere ".", Che è un modo totalmente sbagliato per risolvere il problema. Questo rovina gli URL generati aggiungendo ".: Format" a loro.
So anche che posso aggiungere: requisiti => {: id => regexp} al mio config/routes.rb per abbinare un nome di dominio che include '.' (senza questo, params [: id] è impostato sulla parte del nome del dominio prima del primo '.'), ma questo non aiuta a generare URL/percorsi RESTfully.
Molte grazie :) Nick