agileware-jp / redmine_work_days

Redmine Work Days Plugin
18 stars 8 forks source link

CSVインポート失敗時に Internal error #17

Open prisira opened 6 years ago

prisira commented 6 years ago

CSVインポートを実行すると以下のエラーが発生するようです。

ActionView::Template::Error (First argument in form cannot contain nil or be empty):
    23: 
    24: <h3><%=l(:label_create_rest_day)%></h3>
    25: <div class="box tabular">
    26:   <%= form_for @rest_day, url: rest_days_path do |f| %>
    27:   <div style="margin-bottom: 10px;">
    28:     <%= l(:label_create_rest_day_day) %>
    29:     <%= f.text_field :day, :size => 10, :required => true %><%= calendar_for('rest_day_day') %>
  plugins/redmine_work_days/app/views/rest_days/index.html.erb:26:in `_plugins_redmine_work_days_app_views_rest_days_index_html_erb___265317613_83757180'
  plugins/redmine_work_days/app/controllers/rest_days_controller.rb:41:in `import'
  lib/redmine/sudo_mode.rb:63:in `sudo_mode'

個別登録と削除は正常に動作しました。 環境は Redmine 3.4.2 です。

urimaro commented 6 years ago

@prisira どのようなCSVファイルをインポートしたのでしょうか? エラーになるCSVファイルのデータ、文字コードを教えてください:pray: また、インストールしたのは、masterブランチの最新でしょうか?

prisira commented 6 years ago

まずエラーが発生していたファイルは、 rest_daysの設定画面の「読み込みCSVのフォーマット(例)」の内容を restdays.txt というファイル名で保存したファイルでした。 インポートに失敗する理由は、拡張子が .csv ではなかったため、ということが分かりました。 (MIMEタイプ "text/csv" で判定しているためですね、ちょっと気付き難かったです)

しかしそのインポート失敗時に Internal error が発生する原因は、 rest_days_controller.rb の def import@rest_day に何も入らないためのようです。 def index に習って冒頭に @rest_day = RestDay.new を追加すれば Internal error は発生しなくなるようでした。 が、その対処で良いのか‥詳しい方よろしくおねがいします。