Rails:确定对象是否具有命名路由

Thi*_*ilo 5 routing ruby-on-rails inflection ruby-on-rails-3

在Rails 3.1应用程序中,我想列出一堆我不知道的变量类对象(来自多态表)。对于那些具有命名路由的资源,我想在link_to呼叫中使用该路由。天真的方法,无需检查是否存在这样的路由(请使用HAML):

%ul
- @objects.each do |object|
  %li= link_to object, url_for(object)
Run Code Online (Sandbox Code Playgroud)

undefined method 'foo_path'如果对象是Foo没有命名路由的类的实例(例如,因为未将其定义为资源),则将引发错误。是否有一种简单的方法(例如简单的方法调用)来确定对象或类的命名路由的存在?

编辑:

我想得到的是这样的:

%ul
- @objects.each do |object|
  %li= link_to_if object.has_route?, object, url_for(object)
Run Code Online (Sandbox Code Playgroud)

Tig*_*ine 4

如果您不希望生成没有命名路由的模型对象或为它们输出一些错误消息,您可以在 link_to 调用中添加救援

%ul
- @objects.each do |object|
  %li= (link_to(object, url_for(object)) rescue "no link")
Run Code Online (Sandbox Code Playgroud)