On Nov 20, 6:35 pm, placement_new
On 21 ноя, 11:03, placement_new <acheremukhin.digitalgu...@gmail.com>
wrote:
Да. Это как если сразу сгенерировать контроллер ./script/generate
controller directory/city
http://api.rubyonrails.org/classes/ActionController/Routing/RouteSet/Mapper.html#M000556
И, если сгенерировать контроллер как в примере, то в папке
app/helpers/admin будет лежать products_helper.rb, который будет
содержать определение Admin::ProductsHelper.
Именование моделей подчиняется тем же правилам. Просто в руби
классические namespaces
реализуются модулями, а вот в маршруты рельс попал классический термин.
Кстати, интересно, зачем это может быть нужно в моделях? Есть ли
действующий пример из реальной жизни?
В контроллерах -- понятно -- более очевидное соответствие урлу.
Ваня, наверное всё таки если моделей больше 100, но они все
разнородны, то может хватить
разнесения по папкам. А если они начинают частично дублироваться, но
при этом быть из разных
областей, тогда может возникнуть распихивание их по модулям.
Чтобы все контроллеры не перечислять я делал примерно так:
map.namespace :admin do |admin|
admin.admin_root "", :controller => "dashboard", :action =>
'index'
%w{ controller1 controller2 controller3 }.each do |c|
admin.send "#{c}", "#{c}/:action/:id", :controller => "#{c}"
end
end
Я бы засунул в подпапки, добавил бы соответствующий модуль-префикс для
контроллеров в папках, и не насиловал бы себе мозг.
24 ноября 2009 г. 14:55 пользователь undr <lili...@gmail.com> написал:
On 24 ноя, 15:05, Maxim Kulkin <maxim.kul...@gmail.com> wrote:
> Это Вы называете "не перечислять все контроллеры" ? =)
> К тому же, с таким решением "/admin" префиксы пути все равно будут.
>
> Я бы засунул в подпапки, добавил бы соответствующий модуль-префикс для
> контроллеров в папках, и не насиловал бы себе мозг.
>
> 24 ноября 2009 г. 14:55 пользователь undr <lilipo...@gmail.com> написал:
В приведенном примере с использованием #namespace, результат будет такой:
1) у контроллеров будет префикс "admin/" (т.е. они будут искаться в
модуле Admin)
2) у урл-хелперов будет префикс admin_ (например admin_my_controller_path)
3) у урлов будет префикс "/admin" (например, "/admin/my_controller")
Как я понял, надо всего лишь сделать эффект первого пункта, без
привнесения эффектов от остальных двух (т.е. чтобы все контроллеры
искались в определнном модуле, но урлы и урл-хелперы остались без
изменений).
Судя по реализации, это делается указанием опции :namespace :
ActionController::Routing::RouteSet.draw do |map|
map.with_options(:namespace => "admin/") do |admin|
admin.connect 'posts/:action/:id', :controller => "posts"
# то же самое, что и
# map.connect "posts/:action/:id", :controller => 'admin/posts'
end
end
Ну а дальше можно или перечислить имена контроллеров руками, чтобы
проитерироваться по ним и сделать соотв. map.connect; или найти все
файлы внутри app/controllers/**/*_controller.rb и тоже сделать
map.connect.
24 ноября 2009 г. 16:50 пользователь placement_new
<acheremukhin...@gmail.com> написал: