以前导入我的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" %>
答案 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'])