Ruby on rails 检查RubyonRails中对象的路径是否存在

Ruby on rails 检查RubyonRails中对象的路径是否存在,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在创建一个类以在active admin中呈现列表,并且我希望在给定任何对象的情况下这样做: 类列表生成器 def初始化(对象数组) @对象=对象的数组 生成列表 结束 这只是一个示例代码来解释这个想法。如何为该方法创建has\u show\u path\u?当使用多态路径且路径存在时,它返回路径。但如果它不存在,则返回nomethod错误 关于如何检查路径是否像那样动态存在,有什么想法吗?有url帮助程序来确定路径是否已实际定义 if Rails.application.routes.ur

我正在创建一个类以在active admin中呈现列表,并且我希望在给定任何对象的情况下这样做:

类列表生成器 def初始化(对象数组) @对象=对象的数组 生成列表 结束

这只是一个示例代码来解释这个想法。如何为该方法创建
has\u show\u path\u?当使用
多态路径
且路径存在时,它返回路径。但如果它不存在,则返回nomethod错误


关于如何检查路径是否像那样动态存在,有什么想法吗?

有url帮助程序来确定路径是否已实际定义

if Rails.application.routes.url_helpers.method_defined?(:my_path)
但是,这可能会有问题,因为您似乎正在检查多态路径。在这里,使用简单的启动/救援将很有效

def generate_list
    ul do
       @objects.each do |object|
           begin
               li link_to object.name, polymorphic_path([:admin, object])
           rescue NoMethodError
               li object.name
           end
    end          
end
或者,更简短的版本

def generate_list
    ul do
       @objects.each do |object|
           li link_to(object.name, polymorphic_path([:admin, object])) rescue object.name
    end          
end

将多态路径包装在
begin/rescue
块中。如果您到达
rescue
部分,您就知道没有这样的路径。因此:

def generate_list
    ul do
       @objects.each do |object|
           begin
               p = polymorphic_path([:admin, object])
               li link_to object.name, p
           rescue NoMethodError
               li object.name
           end
        end
    end          
end

您可能需要检查示例代码的语法。语法不正确。添加了缺少的“end”stmt。
def generate_list
    ul do
       @objects.each do |object|
           begin
               p = polymorphic_path([:admin, object])
               li link_to object.name, p
           rescue NoMethodError
               li object.name
           end
        end
    end          
end