在 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/