我想要什么?
我想从Rails 3.2中的模板文件生成.docx文件或.odt文件
我想在里面用日语。
在ubuntu服务器12.04和ruby 1.9.3p194和rails 3.2.8中
发生什么事了?
我试过宝石'docx-templater‘和’宁静‘
红宝石-
https://github.com/jawspeak/ruby-docx-templater
1样品工作良好
2尝试在我的rails应用程序中做同样的事情。
在控制器中作为样本
def gen_docx
input_file = './app/template/ExampleTemplate.docx'
data = {
:teacher => "Priya Vora",
:building => "Building #14",
:classroom => :'Rm 202',
:district => "Washington County Public Schools",
:senority => 12.25,
:roster => [
{:name => 'Sally', :age => 12, :attendence => '100%'},
{:name => :Xiao, :age => 10, :attendence => '94%'},
{:name => 'Bryan', :age => 13, :attendence => '100%'},
{:name => 'Larry', :age => 11, :attendence => '90%'},
{:name => 'Kumar', :age => 12, :attendence => '76%'},
{:name => 'Amber', :age => 11, :attendence => '100%'},
{:name => 'Isaiah', :age => 12, :attendence => '89%'},
{:name => 'Omar', :age => 12, :attendence => '99%'},
{:name => 'Xi', :age => 11, :attendence => '20%'},
{:name => 'Noushin', :age => 12, :attendence => '100%'}
],
:event_reports => [
{:name => 'Science Museum Field Trip', :notes => 'PTA sponsored event. Spoke to Astronaut with HAM radio.'},
{:name => 'Wilderness Center Retreat', :notes => '2 days hiking for charity:water fundraiser, $10,200 raised.'}
],
:created_at => "11-12-03 02:01"
}
DocxTemplater::DocxCreator.new(input_file, data).generate_docx_file()
end3但出现了错误
gem中以下点引起的错误(docx_templater.rb 22)
File.open(file_name, 'w') { |f| f.write(buffer) }安详
https://github.com/kremso/serenity
1个样本运行良好
2在我的rails应用程序中做同样的事情,并且运行良好。
像这样
#encoding: utf-8
require 'serenity'
class Showcase
include Serenity::Generator
Person = Struct.new(:name, :items)
Item = Struct.new(:name, :usage)
def generate_showcase
@title = 'Serenity inventory'
mals_items = [Item.new('Moses Brothers Self-Defense Engine Frontier Model B', 'Lock and load')]
mal = Person.new('Malcolm Reynolds', mals_items)
jaynes_items = [Item.new('Vera', 'Callahan full-bore auto-lock with a customized trigger, double cartridge and thorough gauge'),
Item.new('Lux', 'Ratatata'),
Item.new('Knife', 'Cut-throat')]
jayne = Person.new('Jayne Cobb', jaynes_items)
@crew = [mal, jayne]
render_odt 'app/template/showcase.odt'
end
end3我尝试了我的模板,包括日语,但错误引发。
gem中以下点引起的错误(template.rb 22)
def process context
tmpfiles = []
Zip::ZipFile.open(@template) do |zipfile|
%w(content.xml styles.xml).each do |xml_file|
content = zipfile.read(xml_file)
odteruby = OdtEruby.new(XmlReader.new(content))
out = odteruby.evaluate(context)
tmpfiles << (file = Tempfile.new("serenity"))
file << out #!!!! HERE !!!!
file.close
zipfile.replace(xml_file, file.path)
end
end
end我做了什么?
但这与我的案子无关..。知道吗?我可能不知道基本的事情..。
发布于 2013-03-12 17:01:22
这有点旧,但我只是碰到了同样的情况。在我的例子中,问题是在编写这个文件之前,将它设置为二进制模式:
tmpfiles << (file = Tempfile.new("serenity"))
file.binmode
file << out
file.close希望这能有所帮助
https://stackoverflow.com/questions/13080178
复制相似问题