1

したがって、これを実行するとエラーが返されます。

no block given (yield)

ルビーのブロックを詳しく調べたことは一度もありませんでしたが、これはここで問題になっているようです。より良い解決策がある場合は、提供してください。それ以外の場合は、このレガシー コードの回避策を見つけたいと思います...

  def tab_groupings
    結果 = at_a_glance_grouping
    結果 += rating_grouping if @domain_context.include_ratings and (controller.controller_name !='rewards_credit_cards')
    結果 += 特定のタブ グループ
    結果        
  終わり

  def at_a_glance_grouping
    result = [[:at_a_glance, yield]]
    product_type = controller.controller_name == 'フェアファックス' ? @product_type_helper[:controller] : controller.controller_name
    result[0][1].insert(0, :overall_rating) @domain_context.include_ratings および (product_type !='rewards_credit_cards') の場合
    結果
  終わり

4

1 に答える 1

4

yieldメソッドに渡すブロックを実行するために使用され、その呼び出しの結果で何かを行います。

したがって、メソッドat_a_glance_groupingはブロックを渡すことを期待しています...その後、次の行で実行されます(使用する場所yield

at_a_glance_groupingの最初の行で にブロックを渡さないtab_groupingsため、ruby は正当に文句を言います。

で何を達成しようとしていyieldますか?

本当に必要ですか?そうでない場合は、削除してください。

このメソッドにブロックを渡す場合がある場合、yield を呼び出す前にそれを確認する必要があります。

 result = [[:at_a_glance, yield]] if block_given?
于 2013-09-25T02:24:32.737 に答える