после того, как 'rout.rb' - это просто простой файл ruby, так почему бы не использовать код ruby и, возможно, даже создать метод для генерации необходимых маршрутов. Давайте рассмотрим простой пример с использованием массива ресурсов,если вы хотите использовать вложенные ресурсы, вы можете изменить метод для использования хэш-цепочек, чтобы передать ресурсы, которые вы хотите добавить:
def add_nested_resource(toadd=nil, controller=nil, resources=[])
return if toadd.nil? || controller.nil? || ressources.empty?
resources.each { |x|
resources x do
resources toadd, :controller => controller
end
}
end
add_nested_resource(:notes, "notes", [:resource1, :resource2, ..., :resourceX]
будет эквивалентно
resources :resource1 do
resources :notes, :controller => "notes"
end
resources :resource2 do
resources :notes, :controller => "notes"
end
.
.
.
resources :resourceX do
resources :notes, :controller => "notes"
end
Таким образом, вы можете просто написать множество маршрутов без особых усилий.Конечно, в notes_controller вам, возможно, придется различать, какой ресурс вызвал его, я обычно добавляю скрытое поле в соответствующие формы, где я оставляю «секретное» имя объекта, который вложен во вложенный объект ... как
<%= form_for ... someform for resource1... do |f| %>
...
<%= hidden_field_tag :nesting_object, "Resource1" %>
...
<% end %>
Надеюсь, это поможет вам справиться с трудностями ...