【问题标题】:CSV Import: undefined method `path', Ruby On RailsCSV 导入:未定义的方法“路径”,Ruby On Rails
【发布时间】: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


【解决方案1】:

Employee.import(params[:file])

【讨论】:

  • 感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。
猜你喜欢
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 2016-12-15
  • 2019-10-31
相关资源
最近更新 更多