3
我遵循Import CSV Railscast,它很簡單。嘗試CSV導入時nil:NilClass的未定義方法`路徑'
我加require 'csv'
我config/application.rb
在我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
的思考?
這意味着'PARAMS [:文件]''是,但nil'我看不出爲什麼它是除非你提交沒有選擇文件的形式 – jvnill
哦哇...我很尷尬。我正在導入一個空的表單:(在我的應用中,表單的形式和樣式,它只有一個按鈕用於導入)我選擇了這個想法,我在按'select file'。我的壞的 如果添加作爲回答,我會接受它*隱藏臉* – marcamillion
你去了,謝謝! – jvnill