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 %>但它将输出隐藏字段和块中的任何其他内容。因为我只添加隐藏字段,所以我不想创建自定义表单构建器,而是指定一个不同的表单构建器。
发布于 2011-11-08 22:34:32
正确的方法是像这样调用这个块: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}"
endhttps://stackoverflow.com/questions/8039052
复制相似问题