我有一个问题。
我是关于rails 4和ruby 2的新手,试图找到一种方法来允许控制器在 ROUTES
上多次输入我想在我的控制器中创建几个动作
这是我在铁轨4上的控制器:
namespace :managementbla do
resources :user
end
namespace :managementpoke do
resources :user
end
...
namespace :managementmultiple do
resources :user
end
这是我在铁路4上的路线:
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
在轨道2.3上,sintaxis是
match ':controller(/:action(/:id(.:format)))', via: [:get, :post]
在轨道4上我发现了这个:
if (isset($_SERVER['PROXY_REMOTE_ADDR'])) {
$_SERVER['HTTP_X_FORWARDED_FOR'] = $_SERVER['PROXY_REMOTE_ADDR'];
}
答案 0 :(得分:1)
您有500个控制器这一事实表明您的应用程序设计存在严重问题。无论你正在解决什么问题,我真的非常怀疑拥有500个同名的控制器是最好的解决方案。他们都执行如此截然不同的任务,你需要500个不同的控制器吗?强迫猜测,我会说这些控制器都非常相似,无论他们做什么工作都可以,而且应该由一个控制器处理。
如果您决定继续沿着500控制器的路径前进,那并不难。您似乎忘记了routes.rb
只是Ruby代码。您可以像解决任何需要在Ruby中迭代一堆数字的问题一样解决这个问题:
1.upto(500) do |n|
namespace :"management#{n}" do
resources :user
end
end
不要这样做。仔细看看你的500控制器。必须有一个更好的解决方案。
答案 1 :(得分:0)
您似乎可以使用路由参数或查询字符串参数来简化应用程序。
如果您的应用程序中确实需要这么多路由,您可以考虑一个更有效地路由的框架。你可以看一下Roda:http://roda.jeremyevans.net/why.html。
他们声称路由算法效率为O(log n),其中n是路由数。