Ruby on rails 如何在Padrino中将模板呈现为变量?

Ruby on rails 如何在Padrino中将模板呈现为变量?,ruby-on-rails,nested-forms,padrino,form-helpers,Ruby On Rails,Nested Forms,Padrino,Form Helpers,我试图在Padrino中实现一个嵌套表单,在这个表单中,我可以使用界面中的addwhich按钮添加子对象的多个实例 在Rails中,一种方法是创建一个助手,每当您单击添加任何内容按钮时,该助手都会生成嵌套字段: def link_to_add_fields( text, f, association, target ) new_object = f.object.class.reflect_on_association(association).klass.new templat

我试图在Padrino中实现一个嵌套表单,在这个表单中,我可以使用界面中的
addwhich
按钮添加子对象的多个实例

在Rails中,一种方法是创建一个助手,每当您单击
添加任何内容
按钮时,该助手都会生成嵌套字段:

def link_to_add_fields( text, f, association, target )

  new_object    = f.object.class.reflect_on_association(association).klass.new
  template_path = "#{association}/fields" 

  template = f.fields_for(association, new_object) do |builder|
    render(template_path, :f => builder)
  end

  link_to text, "#", onclick: "add_#{association}_fields(this, \"#{escape_javascript(template)}\", \"#{target}\")"

end
但是,当我尝试在Padrino中执行此操作时,(…)
块的
f.fields\u不会呈现给
模板
变量,而是显示在布局中

我试图在Padrino框架中找到类似于
render_to_string
或类似的东西


有人知道怎么解决这个问题吗?谢谢

让你失望的不是
渲染
,而是
字段。它错误地检测到它是从您的erb模板调用的,并将其连接到它

本质上这是正确的,因为您从erb调用link_to_add_字段,但当时没有检测方法来猜测从erb到ruby再到ruby的双重下降

它可以被认为是一个bug,您可以在这里创建一个问题,并提供一个带有锁定文件的最小失败项目

作为一种解决方案,我建议您手动将渲染引擎切换到ruby,然后再切换回ruby,如下所示:

  def my_rendery_helper
     @current_engine, engine_was = nil, @current_engine
     template = fields_for(:moo) do |builder|
       render('moo')
     end
     @current_engine = engine_was
     template # now contains a SafeBuffer string
     'result'
  end

@current_engine
是一个类变量,用于在内部检测渲染引擎。

非常感谢您的回答。我将在Padrino的Github回购上发布一个问题,并与大家讨论!