我正在处理的应用程序今天刚刚从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中的行:"部分会让它全部显示出来,但它并不是我真正想要的东西,因为我有一个无用的字段集,而且看起来很难看。
欢迎任何提示,谢谢!
答案 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_many
(as 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