Actions
Defect #4188
closedgantt.rhtml doesn't correctly handle nil values
Status:
Closed
Priority:
Normal
Assignee:
-
Category:
UI
Target version:
-
Start date:
2009-11-09
Due date:
% Done:
0%
Estimated time:
Resolution:
Wont fix
Affected version:
Description
Method due_before in app/models/issue.rb can return nil.
app/views/gantt.rhtml doesn't handle this case correctly, instead exiting with the following error:
ActionView::TemplateError (undefined method `<=' for nil:NilClass) on line #184 of issues/gantt.rhtml
This can happen if an issue has a due_date of 0000-00-00 and no fixed_version.
Environment information:
Database Version mysql Ver 14.12 Distrib 5.0.67, for suse-linux-gnu (x86_64) using readline 5.2 Ruby version 1.8.7 (x86_64-linux) Rails version 2.1.2
Error log entry:
ActionView::TemplateError (undefined method `<=' for nil:NilClass) on line #184 of issues/gantt.rhtml: 181: @gantt.events.each do |i| 182: if i.is_a? Issue 183: i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from ) 184: i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to ) 185: 186: i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor 187: i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date ) app/views/issues/gantt.rhtml:184:in `_run_erb_47app47views47issues47gantt46rhtml' app/views/issues/gantt.rhtml:181:in `each' app/views/issues/gantt.rhtml:181:in `_run_erb_47app47views47issues47gantt46rhtml' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `send' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `execute' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `send' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `render' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:35:in `render' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:22:in `render_template' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:248:in `render_file' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1112:in `render_for_file' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:872:in `render_with_no_layout' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/layout.rb:251:in `render_without_benchmark' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:51:in `render' /usr/lib64/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/benchmark.rb:8:in `realtime' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:51:in `render' app/controllers/issues_controller.rb:355:in `gantt' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:131:in `call' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:131:in `custom' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:160:in `call' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:160:in `respond' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:154:in `each' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:154:in `respond' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:107:in `respond_to' app/controllers/issues_controller.rb:354:in `gantt' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1166:in `send' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1166:in `perform_action_without_filters' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:579:in `call_filters' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:572:in `perform_action_without_benchmark' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue' /usr/lib64/ruby/1.8/benchmark.rb:293:in `measure' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/rescue.rb:201:in `perform_action_without_caching' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/query_cache.rb:33:in `cache' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/query_cache.rb:8:in `cache' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:529:in `send' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:529:in `process_without_filters' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:568:in `process_without_session_management_support' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:130:in `process' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:389:in `process' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:149:in `handle_request' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:107:in `dispatch' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in `synchronize' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in `dispatch' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi' /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:35:in `dispatch' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:103:in `process_request' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:153:in `with_signal_handler' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:101:in `process_request' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:78:in `process_each_request' /usr/lib64/ruby/vendor_ruby/1.8/fcgi.rb:612:in `each_cgi' /usr/lib64/ruby/vendor_ruby/1.8/fcgi.rb:609:in `each' /usr/lib64/ruby/vendor_ruby/1.8/fcgi.rb:609:in `each_cgi' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:77:in `process_each_request' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:76:in `catch' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:76:in `process_each_request' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:50:in `process!' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:24:in `process!' public/dispatch.fcgi:24 Rendering /srv/www/vhosts/redmine-0.8/public/500.html (500 Internal Server Error)
Actions