padrino:具有相同名称的子应用程序和控制器生成冗余URL

时间:2012-02-04 04:04:01

标签: controller url-routing padrino

我有一个padrino项目。

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

我还有一个名为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)

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

由于

2 个答案:

答案 0 :(得分:0)

您可以直接使用:

get "/" do
end

您可以发布bundle show吗?

最后您可以尝试使用gem padrino, '0.10.6.c'吗?

答案 1 :(得分: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可以在此加重并提供更好的推荐。