【发布时间】:2012-08-24 19:41:15
【问题描述】:
我们可以检查/测试 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.application.routes.recognize_path
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 routing