2012-03-23 81 views
0

我想創建這樣一個幫手(我使用的是Formtastic寶石):結束語一個Rails 3塊幫手另一個幫手

def admin_form_for(record, columns = nil, &block) 
    semantic_form_for [:admin, record] do |f| 
    f.semantic_errors 
    f.inputs *columns if columns 
    capture(f, &block) if block_given? 
    f.buttons 
    end 
end 

我想換塊幫手admin_form_for,我們再調用一些輸出文本的方法,然後在其中間捕獲一個ERB塊。

我已經試過各種事情

capture(f, &block) if block_given? 

yield f if block_given? 

concat(capture(f, &block)) if block_given? 

似乎沒有任何工作。

的幫助的使用最終看起來像這樣:

<%= admin_form_for @record, [:name, :email] do |f| %> 
    <p><%= some_other_helper %></p> 
<% end %> 

回答

0

對不起,沒有測試它,但你可以試試這個:

def admin_form_for(record, columns = nil, &block) 
    semantic_form_for [:admin, record] do |f| 
    f.semantic_errors 
    f.inputs *columns if columns 
    f.semantic_fields_for(columns, &block) if columns && block_given? 
    f.buttons 
    end 
end 
0

我知道這是晚了一個月,但我認爲這是你在找什麼:

def admin_form_for(record, columns = nil, &block) 
    with_output_buffer do 
    semantic_form_for [:admin, record] do |f| 
     f.semantic_errors 
     f.inputs *columns if columns 
     capture(f, &block) if block_given? 
     f.buttons 
    end 
    end 
end 

這裏with_output_buffer返回表示呈現的內容的字符串由傳入的塊。