仅当Rails.application.routes.url_helpers

时间:2018-07-06 10:52:20

标签: ruby-on-rails ruby routing conditional

我正在*使用自定义的“ 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

关于我可能做错了什么以及如何解决的任何想法?

1 个答案:

答案 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