2013-06-14 2 views
0

Я использую рельсы 3.2.11 и пытаюсь передать объект в пользовательском помощника с целью, и я не понимаю, почему это работает:объекта Pass в вспомогательный метод

- @data = { name: "Add Skus", f: f, container: "skus", association: :skus, child_association: :images, options: @sku_options } 
= link_to_add_fields @data 

но это Безразлично» т:

= link_to_add_fields { name: "Add Skus", f: f, container: "skus", association: :skus, child_association: :images, options: @sku_options } 

Я получаю ошибку: метод syntax error, unexpected ':', expecting '}'

Helper:

def link_to_add_fields(data) 
    STDOUT << "name: " + data[:name].to_s + " :: " 
    STDOUT << "f.object: " + data[:f].object.to_s + " :: " 
    STDOUT << "association: " + data[:association].to_s + " :: " 
    STDOUT << "container: " + data[:container].to_s + " :: " 

    if data[:child_association] 
    STDOUT << "child_association: " + data[:child_association].to_s + " :: " 
    end 
end 

ответ

0

В вашем втором примере Ruby думает, что вы передаете блок как параметр из-за фигурных скобок. Добавить скобки вокруг ваших вариантов, или избавиться от фигурных скобок:

= link_to_add_fields({name: "Add Skus", f: f, container: "skus", association: :skus, child_association: :images, options: @sku_options}) 

или

= link_to_add_fields name: "Add Skus", f: f, container: "skus", association: :skus, child_association: :images, options: @sku_options 
+0

Да, это так, спасибо! –

Смежные вопросы