排序导入的文件ruby

时间:2016-08-30 21:20:49

标签: ruby-on-rails ruby sorting file-upload

以前导入我的CSV文件时,数据会上传排序,但现在,由于没有明显的原因,它在上传后没有排序,我很难弄清楚如何将其转换为分类。

要解决此问题,请查看我的文件上传代码和HTML代码。我构建了一个动态下拉框,用户可以选择一个状态,该状态填充下一个下拉框,其中所有银行都按银行名称列在该状态。我需要在第二个下拉框中的银行名称按字母顺序显示。以前,当我上传我的CSV文件时,银行名称会按字母顺序显示,但现在它没有这样做。

非常感谢任何帮助。可能是我在这里忽视的傻事。

FDIC模型

  def self.import(file)
        CSV.foreach(file.path, headers: true) do |row|
        attributes = row.to_hash
        attributes['state'] = State.where(name: attributes['state']).first
        Fdic.create! attributes
       end 
      end

HTML

  <h4>Select a State</h4>
<%= select_tag :state, options_for_select(State.all.pluck(:name)), include_blank: "States" %>

  <h4>Select a Bank</h4>
<%= select_tag :bank, option_groups_from_collection_for_select(@states, :fdic, :name, :id, :bank), include_blank: "Select a Bank" %>

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,并且您的模型状态如下:

class State < ..
    has_many :banks
    etc..
end

我认为这种修正对你有用。

class State < ..
    has_many :banks, -> { order("banks.name") }
    etc..
end

P.S。 如果您使用find_by,您的代码将更加清晰)

attributes['state'] = State.find_by(name: attributes['state'])