2016-09-07 2 views
1

В ERB или HAML мне нужно оценить одну или несколько функций на основе вывода условного выражения, используя тот же блок HTML для одного.Ruby, оценить одну рубиновую функцию или другую с использованием того же блока DO

В 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.

Возможно, я мог бы избежать этой проблемы («Я не хочу повторно вводить ...»), заставив этот блок блокировать именованную функцию? Как включить блок HAML или ERB в именованную функцию Ruby?

Я использую Ruby-on-Rails 4. Не это важно; это похоже на более синтаксический вопрос ruby, чем вопрос с каркасом.

ответ

3

Вы, кажется, ищет #send

- is_a = @thing.is_a? 
= f.send(is_a ? :method_a : :method_b, arg_1) do |block_arg| 
    (...) 
Смежные вопросы