padrino: вспомогательное приложение и контроллер с одинаковым именем создают избыточный URL - PullRequest
1 голос
/ 04 февраля 2012

У меня есть проект padrino.

Я создал вспомогательное приложение под названием "users".

У меня также есть модель с именем user и контроллер с названием users для управления маршрутизацией.

Users.controllers :users do

Проблема заключается в том, что создаваемые URL-адреса и ответы на них

app.com / users / users / index и т. Д.

если я не перейду к каждому действию и не сопоставлю его

get :index, :map => '/' do

Есть ли лучший способ сделать это?

Я действительно не хочу помещать действия в app.rbдля приложения .. хотя это прекрасно работает.Мне нравится разделение.

Есть ли что-то вроде

Users.controllers :users do
    map '/'
end

Есть ли соглашение об именах, которому я могу следовать, чтобы создать контроллер по умолчанию, который отвечал бы на корневой URL моих приложений?

I 'Я хотел бы сохранить его в контроллере пользователей, чтобы я мог использовать users_index и т. д.

Драгоценные камни, включенные в комплект:

activemodel (3.2.1)
activerecord (3.2.1)
activesupport (3.2.1)
arel (3.0.0)
bcrypt-ruby (3.0.1)
builder (3.0.0)
bundler (1.0.21)
haml (3.1.4)
http_router (0.10.2)
i18n (0.6.0)
mail (2.3.0)
mime-types (1.17.2)
multi_json (1.0.4)
padrino (0.10.6.c)
padrino-admin (0.10.6.c)
padrino-cache (0.10.6.c)
padrino-core (0.10.6.c)
padrino-gen (0.10.6.c)
padrino-helpers (0.10.6.c)
padrino-mailer (0.10.6.c)
polyglot (0.3.3)
rack (1.4.1)
rack-protection (1.2.0)
rack-test (0.6.1)
rake (0.9.2.2)
sass (3.1.13)
shoulda (2.11.3)
sinatra (1.3.2)
sinatra-flash (0.3.0)
sqlite3 (1.3.5)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.31)
url_mount (0.2.1)

Если мне нужно отобразить путь для каждого действия вконтроллер, когда имя моего приложения совпадает с именем моего контроллера, это нормально.Мне просто интересно, есть ли способ установить базовый или корневой путь для всех моих действий через контроллер.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012
#padrino-core-0.10.6.c/lib/padrino-core/application/routing.rb

#around line 655
#method parse_route

#right after unless controller.empty? i added the following which works in my case

   if controller.last.downcase == app_name.downcase and map.blank?
    controller = controller.slice(0, -2) unless controller.length == 1
    controller_path = controller.join("/")
    path.gsub!(%r{^\(/\)|/\?}, "")
    map = File.join(controller_path, path)
end

Так что теперь, если у меня есть приложение с именем Users и контроллер с названием Users для обработки маршрутов, я могу просто сказать / users или / users / new и т. Д. Вместо /users/users/new.

Опять же, я очень новичок в этом, поэтому я понятия не имею, если это лучший способ справиться с этим.Я мог бы просто установить карту вручную на каждом маршруте, но это было бы очень неприятно.

Я надеюсь, что DAddYE сможет учесть это и дать лучшую рекомендацию.

0 голосов
/ 04 февраля 2012

Вы можете использовать напрямую:

get "/" do
end
...