def form_helper(record, *args, &block)
options = args.extract_options!
form_for(record, *(args << options.merge(:builder => builder))) do |f|
f.hidden_field 'hidden', 'key'
yield &block
end
end
如果我有这个帮助器,我将如何更改传入的块的范围,以便在f
的上下文中进行评估?
所以我可以像:
一样使用它<%= form_helper @resource, :builder => SomeFormBuilder do |form| %>
Some stuff
<%- end %>
但它会输出隐藏字段以及块中的其他内容。由于我只添加隐藏字段,因此我不想创建自定义表单构建器,而是指定其他表单构建器。
答案 0 :(得分:1)
正确的方法是像这样调用块:block.call(f)
并将concat用于其他字段。
form_for(record, *(args << options.merge(:builder => builder))) do |f|
block.call(f)
concat hidden_field_tag 'key', "#{key}/${filename}"
concat hidden_field_tag 'AWSAccessKeyId', "#{access_key}"
concat hidden_field_tag 'acl', "#{acl}"
concat hidden_field_tag 'success_action_redirect', "#{redirect}"
concat hidden_field_tag 'policy', "#{policy}"
concat hidden_field_tag 'signature', "#{signature}"
end