在重定向到Rails中的链接之前如何使用'if'语句

问题描述 投票:0回答:1

我在名为analysis_result.rb的模型中对此进行了定义:

def total_matches
  self.patterns.sum do |_, v|
      mat = v.mat.try(:count) || 0
      if v.additional.present? && v.additional['ggroup'].present?
        g_mat = v.additional['ggroup'].try(:count) || 0
      else
        g_mat = 0
      end

      matches + g_matches
    end
 end

我试图在名为_rable_row.haml的视图中使用它,以便事先检查total_matches是否为0。如果为0,我想显示部分内容而不是让用户转到链接。

这是从视图中检查if analysis.results.total_matches != 0的代码:

%tr.form-table__row{ class: ('form-table__row--disabled' if analysis.processing?) }
  %td.form-table__data= check_box_tag "checkbox_object_ids[]", analysis.id

  %td.form-table__data
    - if analysis.results.total_matches == 0
      = render partial: 'partials/shared/empty'
    - elsif analysis.results.total_matches != 0
      = link_to analysis.title, analysis, class: 'js-toggle', data: { href: "loading-#{analysis.id}" }

    - unless analysis.viewed
      %span.dashboard__icon.dashboard__icon--small.fa.fa-circle.text-info{ aria: { hidden: 'true' }, title: 'New' }

我得到undefined method 'total_matches' for #

ruby-on-rails ruby haml
1个回答
0
投票

您的问题来自方法本身的定义。您已经在total_matches上声明了方法analysis_result.rb,但是正在调用analysis.results.total_matches。我会写analysis.total_matches

奖金:

我会建议在您的方法total_matches上方加一个保护子句>

def total_matches
  return 0 unless self.patterns
  # ...
end
© www.soinside.com 2019 - 2024. All rights reserved.