我有一個名爲orders
,訂單模型和csv_files_controller
(與訂單控制器分開)的表的網站。csv上傳器丟零或空錯誤
我有以下幾點:
def self.import(csv_file)
CSV.foreach(csv_file.path, headers: true) do |row|
Order.create! row.to_hash
end
end
在
csv_files_controller
我有以下幾點:
class CsvFilesController < ApplicationController
def new
@csv_file = CsvFile.new
end
def create
@csv_file = CsvFile.new(params[:csv_file])
if @csv_file.save
Order.import
redirect_to csv_file, notice: "Orders uploaded successfully"
end
end
def show
@csv_file = CsvFile.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @csv_file }
end
end
end
我upload_form
部分正在從csv_files
意見訂單意見由頁面呈現:
<%= form_for @csv_file do |f| %>
<div class="controls">
<%= f.file_field :csv_file, accept: 'csv', :class => 'btn btn-xs btn-info' %>
<%= f.submit "Upload Orders", :class => 'btn btn-xs btn-success' %>
</div>
<% end %>
我的routes.rb
也有
resources :csv_files
,當我嘗試加載頁面上傳我得到一個First argument in form cannot contain nil or be empty error
。我不確定我做了什麼錯誤的說法。
現在,如果我將form_for
更改爲:csv_files
頁面將加載,但它是空白的;沒有瀏覽文件或提交按鈕出現,但錯誤消失。雖然表單無法正常工作,但無所謂。我正在使用rails 4
,所以我不應該需要他:html => {multipart: true}
,即使它在那裏它也沒有改變任何東西。
我不明白爲什麼它會拋出錯誤。
更新15年9月1日:
我已經犯了很多的變化,但現在我得到 沒有路由匹配[POST]「/命令/ upload_page」
但我耙路線顯示我已將我的發佈路線設置爲:import。
resources :orders do
collection do
post :import
get :upload_page, as: 'upload_page'
get :search, as: 'search'
get :csv_report, as: 'csv_report'
get :overdue_csv_report, as: 'overdue_csv_report'
end
end
我不明白爲什麼它是路由發佈到upload_page。
我想你在控制器中錯過了'@ csv_file'的'Order.import'方法。 –
我嘗試添加一些東西,但沒有任何區別。 – Shenanigator