【问题标题】:Ruby, evaluate one ruby function or another using the same DO blockRuby,使用相同的 DO 块评估一个或另一个 ruby​​ 函数
【发布时间】:2017-01-15 17:59:18
【问题描述】:

在 ERB 或 HAML 中,我需要能够根据条件的输出评估一个函数或不同的函数,同时对任一函数使用相同的 HTML 块。

在 HAML 中,它会是这样的:

- is_a = @thing.is_a?
= (is_a ? f.method_a : f.method_b) arg_1, |block_arg1| do
  #thing
    .blah
    .inner-thing
      = block_arg1.some_method

请注意,在我的伪代码的第 2 行,我试图根据条件评估一个函数或另一个函数。但我需要将相同的参数传递给任何一个,尤其是因为我不想重新键入 DO 块。

也许我可以通过使 DO 阻止命名函数来避免该问题(“我不想重新键入...”)?如何将 HAML 或 ERB 块转换为命名的 Ruby 函数?

我正在使用 Ruby-on-Rails 4。没关系;这看起来更像是一个 ruby​​ 语法问题,而不是一个框架问题。

【问题讨论】:

    标签: ruby haml erb syntactic-sugar


    【解决方案1】:

    你似乎在寻找#send

    - is_a = @thing.is_a?
    = f.send(is_a ? :method_a : :method_b, arg_1) do |block_arg|
      (...) 
    

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2015-04-05
      • 2012-07-04
      • 1970-01-01
      相关资源
      最近更新 更多