【问题标题】:how to enable f.inputs to render templates when there is a partial with that name?当有一个具有该名称的部分时,如何启用 f.inputs 来呈现模板?
【发布时间】:2023-09-28 11:18:01
【问题描述】:

当我这样做时以 activeadmin 形式:

  form(:html => { :multipart => true })  do |f|
    f.inputs
  end

它很好地显示了所有字段,当涉及到belongs_to 字段时,它将它们显示为一个集合,但我想用我的belongs_to 字段的template 替换这个集合。

比如什么时候会看到

f.inputs :product 

它将呈现_product.html.erb 部分这样的东西。

我知道我能做到:

  form(:html => { :multipart => true })  do |f|
    f.input :field_name1
    f.input :field_name2
    ...
    f.input :field_name3
    render 'x_fields'
  end

但这是我最不喜欢的,问题在于,当我要更新我的数据库时,我也需要更新这些字段,这对于f.inputs 来说不是必需的。这就是我喜欢使用 f.inputs 的原因。

【问题讨论】:

  • 类似 f.template.render partial: 'x_fields' ?
  • 我想让f.inputs :product自动渲染_product.html.erb

标签: ruby-on-rails ruby activeadmin semantic-markup cocoon-gem


【解决方案1】:

嗯,目前使用这个作为解决方案:

def form_inputs_for(m)
    columns=m.columns.map{|c| c.name}
    columns=columns.select{|s| !(s.end_with?"_id" or s.end_with?"_at" or s=="id") }
    columns.each do  |a|
        input a
    end
end

形式:

  form(:html => { :multipart => true })  do |f| 
    f.inputs do
      form_inputs_for(Cpu)
    end
  end

也在我的博客上:http://www.sadafnoor.com/blog/activeadmin-semantic-input-partial-and-f-inputs-togather/

【讨论】:

    最近更新 更多