【发布时间】:2018-12-14 23:13:52
【问题描述】:
我正在构建一个表部分*使用具有相应子类的自定义“表”类),它将为我的应用程序的多个模型生成表。我想要实现的是将表格行链接到显示页面,但由于并非所有模型都有显示页面,因此链接需要是有条件的。
我找到了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。
关于我可能做错了什么以及如何解决它的任何想法?
【问题讨论】:
-
@SergioTulentsev 据此:stackoverflow.com/questions/33904557/… 他们也可以进入检查路径?
-
您可以添加条件以仅显示
link_toif row.object.class.in?([Foo, Bar, Baz]) -
@JoannaGaudyn:抱歉,不明白您在该评论中的意思。你能改写一下吗?
-
对不起@SergioTulentsev,自动更正。根据那个堆栈问题,这些方法也可用于检查路径是否存在。我想我的错误是我假设我的
polymorphic_url(row.object)相当于假设:user_path(因为它们生成相同的 html),但显然情况并非如此。 -
@JoannaGaudyn:是的,这正是你的错误。
标签: ruby-on-rails ruby routing conditional