Я настраиваю сайт Rails, используя map.resources
и map.resource
, и я сталкиваюсь с ограничением (насколько я знаю, по крайней мере).
Вот мой текущий маршрут.
map.with_options :conditions => { :subdomain => true } do |sub|
sub.root :controller => 'company'
sub.resource :company do |company|
company.resources :clients, :path_prefix => nil, :name_prefix => nil, :collection => { :sort => :post } do |clients|
clients.resources :projects, :path_prefix => ":client/:project"
end
end
sub.resource :user, :collection => { :logout => :get }
end
В общем смысле это мой желаемый результат:
/ client-name / action
Вызывает контроллер Clients и передает имя клиента в виде некоторого хеша, который совпадает.
/ client-name / project-name / action
Вызывает контроллер Projects, но передает имя клиента в виде хэша, который остается прежним. Он хочет передать это как идентификатор.
Я надеюсь, что моя структура URL будет очень простой, поэтому:
- client-name = yahoo
- имя-проекта = страница-логина
/ client-name / - для этого следует использовать метод Clients.show
.
/ client-name / edit - должен использоваться метод Clients.edit
.
/ client-name / project-name - для этого следует использовать метод Projects.show
.
/ client-name / project-name / edit - для этого следует использовать метод Projects.edit
.
Хотя с моей текущей маршрутизацией это интерпретируется так:
/ client-name / projects - используется метод Projects.index
.
/ clients / client-name - используется метод Clients.show
.
Я действительно ценю любую помощь, которая оказывается.