2012-11-02 75 views
2

我是新來的rails,我想導出字典(字符串)。 目前我使用這段代碼Rails:CSV數組到字符串(轉換)

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時出現問題(因爲我需要每個輸出在不同的行/行上。所以我的問題是,如何生成所有「能力」列表而不重複?

+1

我不完全瞭解你的問題,但你幾乎可以肯定除非你想要'nil'的情況,否則我們希望將'uniq!'更改爲'uniq'。 –

+0

您尚未提供足夠的信息以獲得真實答案。請編輯你的問題,幷包含示例輸入(即使是'p Competency.first'也會有幫助),以及你想要的輸出示例。 –

+0

感謝AndrewHubbs的建議。 @MarkThomas,我編輯了我的問題。 – user1795503

回答

1

行不會是行逗號分隔,他們很可能是新的行結束,如果你想要在單獨的行上,你應該嘗試用新行代替逗號。

+0

你能舉個例子嗎? – user1795503

0

除了只用逗號連接字符串之外,你應該使用csv內置的csv庫,而不是:

require 'csv' 
CSV.generate{|csv| rows.each{|row| csv << row}} 
+0

我已經嘗試過,但是這隻適用於包括重複。 – user1795503

+1

這只是一個例子。這是你的工作來實現它。 – pguardiario