Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将Rails 3块辅助对象包装到另一个辅助对象中_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 将Rails 3块辅助对象包装到另一个辅助对象中

Ruby on rails 将Rails 3块辅助对象包装到另一个辅助对象中,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我想创建这样一个助手(我正在使用gem): 我试图打包一个块帮助器 Admin。Fuffy,我们调用一些方法来输出文本,然后在中间捕获一个Erb块。 我试过各种各样的东西 capture(f, &block) if block_given? 及 及 似乎什么都不管用 Help的使用结果如下所示: <%= admin_form_for @record, [:name, :email] do |f| %> <p><%= some_other_helper

我想创建这样一个助手(我正在使用gem):

我试图打包一个块帮助器<代码> Admin。Fuffy,我们调用一些方法来输出文本,然后在中间捕获一个Erb块。

我试过各种各样的东西

capture(f, &block) if block_given?

似乎什么都不管用

Help的使用结果如下所示:

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


抱歉,没有测试它,但您可以尝试以下方法:

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

我知道这已经晚了一个月,但我想这就是你想要的:

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返回一个字符串,表示传入块呈现的内容

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