我们能够在Rails中检查/测试路由是否存在吗?
例如,我想显示一个导航栏,应该显示所有菜单URL,无论URL是否存在。(为了区分两者,损坏的URL将使用不同的样式)。
显示每个菜单的代码如下:
%li= link_to_unless_current menu.name, :controller => menu.controller, :action => menu.action
然而,如果提供的控制器和操作路由不存在,Rails 将会抱怨并抛出异常。
Rails 是否有一个函数在我执行上述代码之前进行检查?也许像这样:
-if some_function_to_check_route_existence?(:controller => menu.controller, :action => menu.action)
编辑:
与其在菜单中使用“控制器”和“操作”列,我使用了一个“url”列。现在,我可以像这样做:
- if Menu.root
- for menu in Menu.root.self_and_descendants
- if menu.url
%li= link_to_unless_current menu.name, menu.url
- else
%li= menu.name
我可以使用Rails函数来确定路由是否存在,例如:
我也可以使用Rails函数来确定路由是否存在,例如:
Rails.application.routes.recognize_path