【问题标题】:Rails 3 - Importing Multiple Lines from text_areaRails 3 - 从 text_area 导入多行
【发布时间】:2012-06-18 10:01:08
【问题描述】:

从表单中的 text_area 导入多行的最佳方法是什么?

我尝试了使用 FasterCSV 的快速方法,但得到了 NoMethodError:

undefined method `pos' for {"name"=>"Carrots\r\nPeas\r\nRed Onion"}*
  def create
    FasterCSV.parse(params[:ingredient], {:headers => false, :quote_char => '"', :col_sep => ','}).each do |row_data|
          new_record = Ingredient.new('name' => row_data[0])
          new_record.save
      end

我想将最后的东西应用于具有多列的模型,因此 col_sep

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 fastercsv


    【解决方案1】:

    如果你想在单行上使用FasterCSV.parse,你需要先得到简单的行。

    先拆分多行数据:

    params[:ingredient][:name].split.each do |line|
      FasterCSV.parse(line, { ... options ... }).each do |row_data|
        ... etc ...
    

    我可能会使用parse_line 来明确传达我正在处理单行代码。

    【讨论】:

    • 我不一定想使用 FasterCSV。我之前刚刚成功使用它来导入 CSV,并认为该过程会相似。我已经尝试了您的建议,但得到了 private method split' called for` 作为错误。
    • 这不是一个有用的错误消息。关键是,如果您想使用 FasterCSV 的行解析方法,则需要将传入的字符串参数拆分为单独的行——您在原始代码中犯了同样的错误;如果ingredient 是一个模型,那么您需要访问特定的模型字段。更新示例。虽然“名称”是一个奇怪的属性名称,而不是名称。
    • 这只是一个虚拟应用程序,试图让方法正确。我会在实际中使用更好的属性名称。这似乎是一种工作,现在为 nil:NilClass 错误获得了一个未定义的方法“保存”,但是这些值被添加到了数据库中。此外,例如,如果我输入“Chick Peas”,我会得到两个条目。不过,在正确的道路上,感谢您的帮助。
    • @RyanBerry 你应该在换行符上拆分。不要只输入代码,查找内容。
    • 哈哈,我通常会这样做,但发现反复试验或从错误中学习也时常有效。有点压力要对此进行快速修复,因此试图盲目地将其破解。再次感谢。
    猜你喜欢
    • 2013-10-02
    • 2016-03-25
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2015-03-25
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多