我正在*使用自定义的“ Table”类和相应的子类构建表的一部分,该表将为我的应用程序的多个模型生成表。我要实现的目标是使表行链接到显示页面,但是由于并非所有模型都具有显示页面,因此链接必须是有条件的。
我发现了this question,但不幸的是,提示那里的答案似乎对我没有用。
以下是相关代码:
%tbody
- @table.rows.each do |row|
%tr
-row.attributes.each do |cell|
%td.clickable-cell
= link_to cell, polymorphic_url(row.object)
当我添加if Rails.application.routes.url_helpers.method_defined?(polymorphic_url(row.object))
或if Rails.application.routes.url_helpers.respond_to?(polymorphic_url(row.object))
条件时,根本不会生成链接,无论是没有显示还是没有显示的页面都不会生成链接。
如果不应用任何条件,并且单击没有显示页面的模型的链接,我将得到一个Routing Error No route matches
。
关于我可能做错了什么以及如何解决的任何想法?
答案 0 :(得分:0)
关于我可能做错了什么的任何想法
是的,当然。 method_defined?
和respond_to?
接受方法名称(如:user_path
),而不接受网址(http://example.com/users/1
)。
以及如何解决?
您可以尝试如下操作:
if Rails.application.routes.url_helpers.respond_to?("#{object.model_name.singular_route_key}_path")
对于User
,这将返回user_path
。