簡體   English   中英

更改紅寶石塊的上下文/綁定/范圍(特定於鐵路的form_for)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM