Ruby on rails 检查RubyonRails中对象的路径是否存在
我正在创建一个类以在active admin中呈现列表,并且我希望在给定任何对象的情况下这样做: 类列表生成器 def初始化(对象数组) @对象=对象的数组 生成列表 结束 这只是一个示例代码来解释这个想法。如何为该方法创建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
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