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')
结果
结尾
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)