【发布时间】:2020-05-05 21:13:47
【问题描述】:
我正在尝试导入包含员工的 CSV。我需要控制器上的“csv”。但是我收到此错误:
undefined method `path' for #<ActionController::Parameters:0x00007fad5592b328>
resources :employees do
resources :contrats, only: [:new, :create, :edit, :update]
end
resources :employees do
resources :contratcdds, only: [:new, :create, :edit, :update]
end
resources :employees do
collection { post :import }
end
require 'csv'
def import
Employee.import(params)[:file]
redirect_to root_url, notice: "Import réussi"
end
def self.import(file)
CSV.foreach(file.path, headers:true) do |row|
Employee.create! row.to_hash
end
end
这是我的观点:
<%= form_tag import_employees_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import CSV", class: "btn-medium" %>
<% end %>
我真的很迷茫,有人能帮帮我吗?
热烈的问候。
【问题讨论】:
-
你说
Employee.import(params)[:file],但也许你想要更像Employee.import(params[:file])的东西? -
您遇到语法问题。除了@muistooshort 提到的,你的
CSV.foreach应该是CSV.each和缩进问题。 -
@ARK 我很确定
CSV.foreach没问题,但是是的,缩进可能更一致。 -
@muistooshort 是的,我的错。吸取了教训。几乎在评论之前用谷歌搜索,但没有。应该有。
标签: ruby-on-rails ruby csv import