0

数日前は機能していましたが、何が悪かったのかわかりません...

**undefined method `name' for nil:NilClass**

Extracted source (around line #26):

23:             %td= number_with_precision(employee.compensation_leave_balance, precision:1)
24:   #calendar.tab-pane.fade
25:     = calendar(:year => 2012, :month => 6, :first_day_of_week => 1, summary: "Leave Calendar", calendar_title: "June", month_header: true) do |date|
26:       - render_leave_calendar_cell(date)
27:   #trash.tab-pane.fade
28:     = render 'table', leaves: @leaves.where(deleted: true)

app/helpers/leaves_helper.rb:11:in `block in events_for'
app/helpers/leaves_helper.rb:10:in `events_for'
app/helpers/leaves_helper.rb:4:in `render_leave_calendar_cell'
app/views/human_resources/leaves/index.html.haml:26:in `block in _app_views_human_resources_leaves_index_html_haml__145883348_88978910'
app/helpers/calendar_helper.rb:146:in `call'
app/helpers/calendar_helper.rb:146:in `block in calendar'
app/helpers/calendar_helper.rb:145:in `upto'
app/helpers/calendar_helper.rb:145:in `calendar'
app/views/human_resources/leaves/index.html.haml:25:in `_app_views_human_resources_leaves_index_html_haml__145883348_88978910'

何が悪かったのか本当にわからない

a/h/leaves_helper.rb                                                                                                                        
   1 module LeavesHelper
   2   def render_leave_calendar_cell(date)
   3     html = content_tag(:span, date.day, class: 'dayDisplay')
   4     html += content_tag(:div, events_for(date))
   5     raw(html)
   6   end
   7 
   8   def events_for(date)                                                                                                                  
   9     html = ""
  10     current_company.leaves.where("start_date <= '#{date}' and return_date > '#{date}'").where(deleted: false).each do |leave|
  11       html += content_tag(:div, leave.applicant.name, class: 'leaveName')
  12     end
  13     raw html
  14   end

それは日付なしでしょうか?これを修正する方法><

ビリーに感謝

4

1 に答える 1

0

abhasがすでに述べたように、leave.applicant少なくとも1枚の葉はゼロです。

データベースに移動して、それがどれであるかを調べます。次に、葉をどうするかを考えます。それらも削除し、不足している申請者を再度追加するか、データの移行が適切である可能性があります。

迅速な解決策は、申請者が行方不明の場合はスキップすることです。

html += content_tag(:div, leave.applicant.name, class: 'leaveName') if leave.applicant.present?

また、アプリケーションで削除カスケードを適切に構成したかどうかも確認します。これはしばしばそのような問題を引き起こします。この点で安全を確保したい場合は、データベースの制約を追加して、参照されているエンティティが削除されないようにする必要があります。

于 2012-06-26T12:48:17.467 に答える