【发布时间】:2012-06-19 08:13:37
【问题描述】:
在 Rails 3.1 应用程序中,我想列出一堆我事先不知道的变量类对象(来自多态表)。对于那些具有命名路由的资源,我想在link_to 调用中使用该路由。不检查是否存在这样的路线的幼稚方法(请原谅 HAML):
%ul
- @objects.each do |object|
%li= link_to object, url_for(object)
如果对象是没有命名路由的类Foo 的实例(例如,因为它没有被定义为资源),这将引发undefined method 'foo_path' 错误。是否有一种简单的方法(例如简单的方法调用)来确定对象或类的命名路由是否存在?
编辑:
我想得到的是这样的:
%ul
- @objects.each do |object|
%li= link_to_if object.has_route?, object, url_for(object)
【问题讨论】:
-
您能解释一下为什么要为该对象创建命名路由吗? url_for 输出所有对象的通用 URL 是因为它们共享一个共同的基本类型还是您发布的代码有什么问题?
-
它们不一定共享一个共同的基本类型。如果命名路由不存在,我不想创建它 - 我只想检查它是否存在。
-
是的,但根据我的经验,如果存在路由,url_for 只会为任何给定的模型对象生成正确的 url。或者您有没有要过滤的路由的模型对象?
标签: ruby-on-rails ruby-on-rails-3 routing inflection