Я определил это в модели с именем analysis_result.rb
:
def total_matches
return 0 unless self.patterns
self.patterns.sum do |_, v|
matches = v.matches.try(:count) || 0
if v.additional.present? && v.additional['ggroup'].present?
bc_matches = v.additional['ggroup'].try(:count) || 0
else
bc_matches = 0
end
matches + bc_matches
end
end
Я пытаюсь использовать его в представлении с именем _rable_row.haml
, чтобы заранее проверить, равен ли total_matches
0 или не. Если это 0, я хочу отобразить частичное вместо того, чтобы позволить пользователю go перейти по ссылке.
Это код из вида для проверки 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 #<Mongoid::Criteria:0x00007fc51c5e3720>