Ruby on rails 需要块的代码-LocalJumpError:未给定块(产量)

Ruby on rails 需要块的代码-LocalJumpError:未给定块(产量),ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试执行以下代码: def excel(xlsx_package) yield Excel::DSL.new(xlsx_package) end 但当我这样做的时候: pkg = Axlsx::Package.new excel(pkg) 我得到这个错误: LocalJumpError: no block given (yield) from /Users/gandalf/reporter/app/helpers/excel_helper.rb:3:in `excel' 我应该如

我正在尝试执行以下代码:

def excel(xlsx_package)
  yield Excel::DSL.new(xlsx_package)
end
但当我这样做的时候:

pkg = Axlsx::Package.new
excel(pkg)
我得到这个错误:

LocalJumpError: no block given (yield)
from /Users/gandalf/reporter/app/helpers/excel_helper.rb:3:in `excel'

我应该如何执行
excel
方法?我现在不传递给它的是什么?

yield
用于给定的块。例如:

pkg = Axlsx::Package.new
excel(pkg) do
#some code here
end

但我不知道,您试图归档的是什么,我不确定您是否需要在这里进行阻止。

您可能只是将
yield
return
混淆了
yield
将给定的参数传递给一个块,因此该块是必需的
return
将返回此对象(除非您需要提前返回,否则不需要)。您可以这样编写它
excel\u dsl=excel::dsl.new(xlsx\u包);块_给定?收益率(excel\u dsl):excel\u dsl
。这样,如果一个块被传递,它将产生dsl,否则它将返回它。