没有区块给定产量

Jac*_*han 1 ruby ruby-on-rails block

所以执行这个命令会返回一个错误:

no block given (yield)

好吧,从来没有深入研究过 ruby​​ 中的块,这似乎是这里的一个问题。如果您有更好的解决方案,请提供,否则我想找到此遗留代码的解决方法......

  def tab_groupings
    结果 = at_a_glance_grouping
    结果+= rating_grouping if @domain_context.include_ ratings and (controller.controller_name !='rewards_credit_cards')
    结果 += Specific_tab_groupings
    结果        
  结尾

  def at_a_glance_grouping
    结果 = [[:概览, 产量]]
    产品类型=控制器.控制器名称=='费尔法克斯'?@product_type_helper[:controller] : 控制器.控制器名称
    result[0][1].insert(0, :overall_ rating) if @domain_context.include_ ratings and (product_type !='rewards_credit_cards')
    结果
  结尾

Tar*_*ast 5

yield用于执行传递给该方法的块,然后对该调用的结果执行某些操作。

因此,您的方法at_a_glance_grouping期望您向它传递一个块...然后它将在下一行(您使用的地方yield)执行

您没有将任何块传递给 的at_a_glance_grouping第一行tab_groupings,因此 ruby​​ 正确地抱怨。

您想通过 实现什么目标yield

你真的需要它吗?如果没有 - 那么只需将其删除即可。

如果有时您确实此方法传递了一个块,那么您需要在调用yield之前进行检查,例如:

 result = [[:at_a_glance, yield]] if block_given?
Run Code Online (Sandbox Code Playgroud)