2012-03-23 88 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返回表示呈现的内容的字符串由传入的块。