Ruby,使用相同的 DO block 评估一个或另一个 ruby​​ 函数

标签 ruby haml erb syntactic-sugar

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

在 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 block 。

也许我可以通过使 DO block 成为一个命名函数来避免这个问题(“我不想重新输入...”)?如何将 HAML 或 ERB block 转换为命名的 Ruby 函数?

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

最佳答案

你好像在找#send

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

关于Ruby,使用相同的 DO block 评估一个或另一个 ruby​​ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380147/

相关文章:

ruby-on-rails - Rails Assets 未在生产中预编译

ruby - 是否可以使用关键字参数传递函数

ruby-on-rails - 获取未定义的方法 content_for()

ruby - Sinatra 在 Ruby 1.9.2-p0 上找不到 View

javascript - 在 html.erb 文件中使用 javascript?

ruby-on-rails - 添加两个 ruby​​ 数组

ruby-on-rails - Rails 3、自定义操作和 HTML 请求方法

ruby-on-rails - Ruby 1.9、Rails 2.3.9 以及数据库和 erb View 中的 unicode 字符,仍然不行吗?

ruby-on-rails - Rails 简单表单检查错误 'null' 对于类型推断来说太大了

ruby - Recipe : newrelic-infra 的未定义方法 `poise_service_user'