我正在尝试使用此帮助程序从已解析的json(以Hash形式)生成表单
def hash_to_form(hash, fields, legend)
fields.fields_for do |b|
concat('<fieldset><legend>', legend, '</legend>')
hash.each do |key, attr|
if hash[key].is_a? Hash
hash_to_form(hash[key], b, key)
else
concat("<div class=\"field\">")
concat(b.label(key, key))
concat(b.text_field(key, :value => attr))
concat("</div>")
end
end
end
end
但是当我尝试调用辅助方法时,它给了我一个错误的参数(0为1)。这没有任何意义,因为它需要3个参数?
答案 0 :(得分:2)
不是你的帮助者的参数数量错误,而是你的fields_for
电话:
fields.fields_for do |b|
此方法采用关联名称。如果用户模型has_many地址,则调用方法如下:
f.fields_for :addresses do |address_fields|
修复此问题应该可以修复帮助程序。