在rails应用程序中放置to_xls和from_xls的位置

时间:2009-10-07 23:51:45

标签: ruby-on-rails organization export-to-excel xls

所以我有一个模型,我需要能够序列化/读取Excel(XLS)文档。我对这段代码实际所属的位置感到有点失落。我最初的想法是to_xls是一个视图,但是在调用ActiveRecord中的(to|from)_xml(to|from)_json之后,我想知道这些东西是否属于模型。或者,它是否只属于某个单独的容器?

对于它的价值,用户将从网站下载模型,在excel中修改它们,然后发布它们。

2 个答案:

答案 0 :(得分:0)

to_xls 肯定是一个视图。我尝试/app/views/foos/show.xls.erb,但如果您不喜欢ERB for XLS视图,请尝试使用RbTemplateHandler在纯Ruby中进行渲染。

from_xls完全是一个不同的野兽。它当然不属于控制器。它在逻辑上属于模型,但我将它提取到mixin中。如果您只为一个型号提供XLS,那么以下设置就足够了:

# app/models/foo.rb
class Foo
  extend XLS2Foo
  ...
end

# lib/foo_from_xls
module XLS2Foo
  def to_foo(xls)
    ...
  end
end

如果您需要为一堆模型执行此操作,您可以在lib目录中尝试解析器生成器DSL,并为模型类中的每个模型声明自己的解析器。

答案 1 :(得分:0)

Rails不支持

到/ from_xls。有一个插件,但我没有使用它to_xls plugin for Rails。更好的方法是使用FasterCSV进出CSV并获取可用的内容。以下是一个示例:Export to_csv from ActiveRecord