我有两种方法几乎可以完成相同的操作,但是传递参数的方法略有不同:
def generate_file(filename)
draw
FileUtils.mkdir_p 'tmp/pdf'
@pdf.render_file "#{Rails.root}/tmp/pdf/#{filename}"
end
def generate_pdf(report, version)
draw
path = "tmp/pdf/reports/#{report.reference}"
FileUtils.mkdir_p(path)
@pdf.render_file "#{Rails.root}/#{path}/#{version}"
end
我想重构它,并在调用生成pdf文件的函数时仅使用generate_file
方法。我是否应该通过可选的params
(version = nil
)并测试其是否已定义?
赞:
def generate_file(filname, version = nil, report = nil)
draw
if report && version
path = "tmp/pdf/reports/#{report.reference}"
FileUtils.mkdir_p(path)
@pdf.render_file "#{Rails.root}/#{path}/#{version}"
else
FileUtils.mkdir_p 'tmp/pdf'
@pdf.render_file "#{Rails.root}/tmp/pdf/#{filename}"
end
end
答案 0 :(得分:1)
在建议的代码中,您似乎有一些错别字(filname
而不是filename
)和语法错误(例如if..end..else..end
)。怎么样呢?
def generate_file(filename, version=nil, report=nil)
draw
report_version = report && version
path = report_version ? "tmp/pdf/reports/#{report.reference}" : "temp/pdf"
FileUtils.mkdir_p( path )
@pdf.render_file "#{ Rails.root }/#{path}/#{ report_version ? version : filename }"
end