我是rails的新手,我想导出字典(字符串)。 目前我正在使用这段代码
Competency.order(:competencies).map(&:competencies).uniq!.join(", ")
生成:
Build a cage!, Build tha pizza, Demonstrated ability in flying, Demonstrated ability in pizza baking
我想将此导出到csv,但问题是它是一个数组。我想创建单独的字符串(逗号分隔)并在不同的行上显示每个字符串。当将此导出到csv时,当前所有内容都显示在一行上。
有任何线索如何做到这一点?我创建了一个数据数组,因为有很多重复数据,这段代码正在过滤所有重复数据。
在我的控制器中:
format.csv { render Competency.order(:competencies).map(&:competencies).uniq!.join(", ") }
我希望有人能帮到我,非常感谢。
编辑:
理想情况下,我想获取所有能力,并且输出没有重复,这是我的控制器:
def dictionary
@competencies = Competency.all
respond_to do |format|
format.html { render html: positions_dictionary_path }
format.csv { render Competency.order(:competencies).map(&:competencies).uniq!.join(", ") }
format.xls { send_data Competency.order(:competencies).map(&:competencies).uniq!.join(", ") }
end
end
通常在视图文件中执行:
<div>
<% @posts.each do |competency| %>
<%= competency.competencies %>
<% end %>
</div>
这会生成所有能力的列表,但也会生成重复项。我的解决方案是创建一个数组。但是这会在导出到csv时产生问题(因为我需要不同行/行上的每个输出。所以我的问题是,如何生成所有“能力”的列表而不重复?
答案 0 :(得分:1)
行不会以逗号分隔。它们很可能是新生产线终止的。如果你想在不同的行上使用它们,你应该尝试使用新行而不是逗号来加入它们。
答案 1 :(得分:1)
除了使用逗号加入字符串之外,csv还有更多内容。您应该使用内置的csv库:
require 'csv'
CSV.generate{|csv| rows.each{|row| csv << row}}