Rails,通过嵌套表单创建一个具有不同列类型的has_many ralation条目

时间:2014-08-07 06:19:02

标签: ruby-on-rails-4 nested-forms

我的应用程序有以下型号:

Advertisment (has_many :images)
Image (belongs_to :advertisment)
Image Fields: advertisment_id, image_type, image_url

app 1中有两种图像类型:square和2. banner。

我希望能够为两个类型图像创建一个带有两个浏览按钮的嵌套表单,并创建一个包含两种类型图像的广告。

预期结果:

#<Advertisment id: 1, name: "Test", content: "Lorem ipsum", created_at: "2014-08-01 20:14:06", updated_at: "2014-08-01 20:14:06">
[#<Image id: 1, advertisment_id: 1, image_url: "/images/test1.png", image_type: "banner",  created_at: "2014-08-01 20:14:09", updated_at: "2014-08-01 20:14:09">, <Image id: 2,  advertisment_id: 1,  image_url: "/images/test2.png", image_type: "square" ,created_at: "2014-08-01 20:14:26", updated_at: "2014-08-01 20:14:26">]

我尽快需要一些指导。在此先感谢!

1 个答案:

答案 0 :(得分:0)

为什么不为每个图像创建2个字段,如

#<Image id: 1, advertisment_id: 1, banner_url: "/images/test1.png",  square_url: "/images/test2.png", created_at: "2014-08-01 20:14:09", updated_at: "2014-08-01 20:14:09">

它可以让您更轻松地执行此操作,广告只有一个图片,可以同时访问bannersquare

另一个选项(如果横幅和正方形图像相同,只是尺寸不同)使用CarrierWave gem并执行类似

的操作
class ImageUploader < CarrierWave::Uploader::Base

  ...

  process :resize_to_fit => [700, 400]  # for banner

  version :square do
    process resize_to_fill: [300, 300]  # for square
  end
end