未显示嵌套表单中的Active Admin has_one关联

时间:2015-01-26 16:12:51

标签: ruby-on-rails activeadmin

我正在处理的应用程序今天刚刚从Rails 4.0更新到Rails 4.1,因为有些人需要更新版本的Active Admin。 由于某种原因,下面的代码片段与之前版本的AA一起使用,不再显示。

我有一个嵌入has_one关系的表单,而该关系又有另一个has_one关系,所以这是它的外观:

form do |f|
#some code
f.inputs "Chef d'établissement", for: [:chef_etablissement, f.object.chef_etablissement || ChefEtablissement.new] do |cetb|
    cetb.input :civilite_gabriel_id, label: "Civilité", :as => :select,
      :collection => Civilite.all.map{|c| ["#{c.libelle_long.capitalize}", c.id_gabriel]},
      include_blank: false
    cetb.input :nom_patro
    cetb.input :nom
    cetb.input :prenom_usuel
    cetb.input :mail1
    cetb.inputs "Adresse Cetb", for: [:adressecommunication, cetb.object.adressecommunication || Adressecommunication.new] do |adrcetb|
        adrcetb.input :adresse1
        adrcetb.input :adresse2
        adrcetb.input :adresse4, label: "Type de voie"
        adrcetb.input :adresse3
        adrcetb.input :adresse5, label: "Mention"
        adrcetb.input :code_postal
        adrcetb.input :ville
      end
    end

我认为这与" cetb.inputs"有关。部分覆盖我之前的" cetb.input"自从我评论我的" cetb.input"表格出现了,但我无法找到一种正确的方法。我的意思是,把" cetb.input" " cetb.inputs中的行:"部分会让它全部显示出来,但它并不是我真正想要的东西,因为我有一个无用的字段集,而且看起来很难看。

欢迎任何提示,谢谢!

3 个答案:

答案 0 :(得分:3)

对于那些使用1.0版本的人来说,文档非常有用: https://github.com/activeadmin/activeadmin/wiki/Nested-model-form-image-upload

form :html => { :multipart => true } do |f|
  f.inputs "General" do
    f.input :name
  end

  f.inputs "Image or Video", :for => [:media, f.object.media || Media.new ] do |fm|
    fm.inputs "Image", :for => [:image, fm.object.image || Image.new] do |fmi|
      fmi.input :file, :for => :image, :as => :file, :hint => f.template.image_tag(f.object.media.image.url(:cropped))
    end
    fm.inputs "Video", :for => [:video, fm.object.video || Video.new] do |fmv|
      fmv.input :url
    end
  end
end

答案 1 :(得分:0)

我们在最近的ActiveAdmin升级后遇到了同样的问题,这个问题保留了密钥:https://github.com/activeadmin/activeadmin/issues/3791我们不得不从调用嵌套表单的f.inputs方式切换到f.has_manyas noted,实际上对has_one关系有效)。

这种方法对你有用吗?

cetb.object.build_adressecommunication unless(cetb.object.adressecommunication)
cetb.has_many :adressecommunication do |adrcetb|
  adrcetb.input :adresse1
  adrcetb.input :adresse2
  adrcetb.input :adresse4, label: "Type de voie"
  adrcetb.input :adresse3
  adrcetb.input :adresse5, label: "Mention"
  adrcetb.input :code_postal
  adrcetb.input :ville
end

答案 2 :(得分:0)

所以,我记得不久前做过这件事,并且不记得这么做很难。但是,这就是我解决你所遇到的确切问题的方法。

我试过了@Nick M的答案,但那给了我"删除"和"添加颜色"我的嵌套资源下面的按钮,我不想要。

希望这有助于某人。

form do |f|
  if f.object.new_record?
    f.object.build_color
  end

  f.inputs do
    f.input :title
    f.input :overview

    f.inputs "Color" do 
      f.semantic_fields_for :color do |color| 
        color.input :hex_code
      end 
    end

  end
  f.actions
end