Ruby on rails 如何在Padrino中将模板呈现为变量?
我试图在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
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回购上发布一个问题,并与大家讨论!