Rails - 将DB导出为CSV而不是从翻译文件中读取

时间:2014-11-04 15:40:50

标签: ruby-on-rails ruby csv rails-activerecord

我在这里看到了许多有用的建议,但到目前为止还没能解决我的问题。我正在创建一个redmine插件(ruby on rails),我有一个按钮,可以将db导出到CSV文件中。那部分工作正常。

我的问题是csv文件中的列名未被翻译似乎没有通过调用human_attribute_name来改变。任何人都能指出我出错的地方并帮我纠正吗?

我主要遵循本教程:http://railscasts.com/episodes/362-exporting-csv-and-excel?view=asciicast

应用程序/模型/ person.rb

def self.to_csv(options={})
  CSV.generate(options) do |csv|
    csv << User.attribute_names.map {|c| User.human_attribute_name(c)}
    # Could I instead use:
    # csv << User.human_attribute_names
    User.all.each do |user|
      csv << user.attributes.values
    end
  end
end

配置/区域设置/ en.yml

en:
  activerecord:
    attributes:
      user:
        col1: "Column 1"
        col2: "Column 2"

1 个答案:

答案 0 :(得分:0)

找到这个似乎有用的解决方案:

应用程序/模型/ user.rb

def self.to_csv(options={})
  CSV.generate(options) do |csv|
    @cols = User.attribute_names #[1..-1] to remove first column from output
    csv << @cols.map { |c| I18t.t c, scope: [:activerecord, :attributes, :user] }
    User.all.each do |user|
      csv << user.attributes.value_at(*@cols)
    end
  end
end