我正在关注Import CSV Railscast并且它很直接。
我已将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
思想?
答案 0 :(得分:2)
从评论中:您很可能在不选择文件的情况下提交表单:)