[英]Changing the context/binding/scope of a ruby block (Rails-specific form_for)
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 %>
但是它將輸出隱藏字段以及塊中的其他內容。 由於僅添加隱藏字段,因此我不想創建自定義表單構建器,而是指定其他表單構建器。
正確的方法是這樣調用該塊: 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.