2

Rails は初めてで、(文字列の) 辞書をエクスポートしたいと考えています。現時点では、このコードを使用しています

    Competency.order(:competencies).map(&:competencies).uniq!.join(", ")

引き起こす:

   Build a cage!, Build tha pizza, Demonstrated ability in flying, Demonstrated ability in pizza baking

これをcsvにエクスポートしたいのですが、問題はそれが1つの配列であることです。個別の文字列 (カンマ区切り) を作成し、各文字列を別の行に表示したいと思います。現在、これを csv にエクスポートすると、すべてが 1 行に表示されます。

これを行う方法の手がかりはありますか?多くの重複データがあり、このコードはすべての重複を除外しているため、データの配列を作成しました。

私のコントローラーで:

   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にエクスポートするときに問題を引き起こします(すべての出力を別の行/行に必要とするためです。私の質問は、重複なしですべての「能力」のリストを生成するにはどうすればよいですか?

4

2 に答える 2

1

csv には、文字列をコンマで結合するだけではありません。代わりに、組み込みの csv ライブラリを使用する必要があります。

require 'csv'
CSV.generate{|csv| rows.each{|row| csv << row}}
于 2012-11-03T00:10:37.713 に答える
1

行はコンマで区切られません。それらは改行で終了している可能性があります。これらを別々の行に配置したい場合は、コンマの代わりに新しい行で結合してみてください。

于 2012-11-02T22:01:03.430 に答える