2012-03-23 4 views
0

私は、この(私はFormtastic宝石を使用しています)のようなヘルパー作成したい:私は、ブロックヘルパーadmin_form_forをラップしようとしている別のヘルパーで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 

をテキストを出力し、途中で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は、レンダリングされたコンテンツを表す文字列を返します渡されたブロックによって。

関連する問題