Rails 2.3.2 アプリが次のように応答して URL を生成するようにします。
/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
Web サイト モデルを変更することで、次のようなより良い URL を生成できます。
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は不幸になります。これは「。」が原因だと思います。character は ActionController::Routing::SEPARATORS で定義され、URL を分割する特殊文字をリストします。これにより、/websites/1.xml のようなことができます。
SO、「。」を許可するクリーンな方法はありますか RESTful URL の文字?
ActionController::Routing::SEPARATORS を「.」を含めないように再定義しようとしましたが、これは問題を解決するにはまったく悪い方法です。これは、生成された URL に ".:format" を追加することでめちゃくちゃになります。
:requirements => { :id => regexp } を config/routes.rb に追加して、「.」を含むドメイン名に一致させることもできます。(これがないと、params[:id] はドメイン名の最初の '.' の前の部分に設定されます)、これは URL/パスを RESTful に生成するのに役立ちません。
どうもありがとう:) ニック