开发者

Check to see whether a route exist or not in Rails 3

Can we check/test for existence of a route in Rails?

For example, I want to show a navigation bar that should show all of it's menu URL, regardless the URL exist or not. (to differ between the two, the broken url would use a different styling).

The code to show each menu would look like this:

%li= link_to_unless_current menu.name, :controller => menu.controller, :action => menu.action

However, Rails would complaint and throw an exception, if the supplied controller and action route doesn't exist.

Does Rails have a function to check before I do the aforementioned code?. Perhaps, something that looks like this:

-if some_function_to_check_route_existence?(:controller => menu.controller, :action => menu.action)

EDITED:

Rather than using "controller" and "action" columns for the menu, 开发者_Go百科i use a "url" column instead. Now, I can do something like this:

- 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

I can also use rails function to determine existence of a route, such as:

Rails.application.routes.recognize_path


What about this:

<% link_to @post.title, post_path if post_path %>


You can use begin rescue instead checking existances

route_exist = true
begin
    url_for(:controller => menu.controller, :action => menu.action)
rescue
    # route not exist
    route_exist = false
end

if route_exist
   ...
else
   ...
end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜