因此执行此操作会给我一个错误:
no block given (yield)
从来没有深入研究红宝石中的积木,这似乎是一个问题。如果您有更好的解决方案请提供商,否则我想找到这个遗留代码的解决方法......
def tab_groupings result = at_a_glance_grouping result += rating_grouping if @domain_context.include_ratings and (controller.controller_name !='rewards_credit_cards') result += specific_tab_groupings result end def at_a_glance_grouping result = [[:at_a_glance, yield]] product_type = controller.controller_name == 'fairfax' ? @product_type_helper[:controller] : controller.controller_name result[0][1].insert(0, :overall_rating) if @domain_context.include_ratings and (product_type !='rewards_credit_cards') result end
答案 0 :(得分:3)
yield
用于执行传递给方法的块,然后使用该调用的结果执行某些操作。
因此,您的方法at_a_glance_grouping
希望您将一个块传递给它...然后它将在以下行(您使用yield
的地方)执行
你没有在at_a_glance_grouping
的第一行向tab_groupings
传递任何阻止,因此ruby正当地抱怨。
您希望通过yield
实现什么目标?
你真的需要它吗? 如果没有 - 那么就把它删除。
如果有时你做将一个块传递给这个方法,那么你需要在调用yield之前检查它,例如:
result = [[:at_a_glance, yield]] if block_given?