Ruby on rails 可选方法参数
我有两种方法可以做几乎相同的事情,但在传递参数方面略有不同:Ruby on rails 可选方法参数,ruby-on-rails,ruby,methods,parameters,arguments,Ruby On Rails,Ruby,Methods,Parameters,Arguments,我有两种方法可以做几乎相同的事情,但在传递参数方面略有不同: 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}" File
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
方法。我是否应该通过可选的参数(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
您在建议的代码中似乎有一些打字错误(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
当你用英语写作时,请使用英语标点符号,而不是法语标点符号。请与代码内的间距保持一致。