1

我有一个帕德里诺项目。

我创建了一个名为“用户”的子应用程序。

我还有一个名为 user 的模型和一个名为 users 的控制器来处理路由。

Users.controllers :users do

问题在于正在生成和响应的网址是

app.com/users/users/index

除非我去每个动作并映射它

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

有没有更好的方法来做到这一点?

我真的不想将操作放在应用程序的 app.rb 中。即使效果很好。我喜欢分开。

有没有类似的

Users.controllers :users do
    map '/'
end

是否有我可以遵循的命名约定来创建一个可以响应我的应用程序根 URL 的默认控制器?

我想将它保存在用户控制器中,以便我可以使用 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)

如果当我的应用程序名称与控制器名称匹配时,我必须为控制器中的每个操作映射路径,那很好。我只是想知道是否有办法通过控制器为我的所有操作设置基本路径或根路径。

谢谢

4

2 回答 2

0

你可以直接使用:

get "/" do
end
于 2012-02-04T10:16:10.303 回答
0
#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 能够重视这一点并提供更好的建议。

于 2012-02-07T02:34:33.787 回答