在尝试导入CSV时,对nil:NilClass未定义方法`path'。[英] undefined method `path' for nil:NilClass when trying CSV import

问题描述

我正在关注进口CSV Railscast 它很简单.

我在我的config/application.rb

中添加了require 'csv'

在我的BuildingsController中,我创建了一个新的import这样的动作:

def import
  Building.import(params[:file])
  redirect_to root_url, notice: "Buildings imported."
end

我认为,我有:

<h2>Import Buildings</h2>
<%= form_tag import_buildings_path, multipart: true do %>
  <%= file_field_tag :file %>
  <%= submit_tag "Import" %>
<% end %>

这在我的Building.rb模型中:

def self.import(file)
  CSV.foreach(file.path, headers: true) do |row|
    building = find_by_name(row["name"]) || new
    building.attributes = row.to_hash.slice(*accessible_attributes)
    building.save!
  end
end

在我的routes.rb中,我有:

  resources :buildings do
    collection { post :import }
  end

当我在视图上单击"导入"按钮时,我会收到此错误:

NoMethodError at /buildings/import

Message undefined method `path' for nil:NilClass
File    /myapp/app/models/building.rb
Line    23

想法?

推荐答案

从评论中:您很可能在不选择文件的情况下提交表单:)

本文地址:https://www.itbaoku.cn/post/584844.html