我在香蕉模型和图像模型之间建立了一对多的关联。
此外,每个香蕉和图像都属于一个用户(通过单独的关联,因为图像和它的香蕉可能有不同的用户)。
我想要一个嵌套表单来创建香蕉和图像。最重要的是我不知道要构建多少个图像(注意多个属性)。下面表格的注释掉的部分将创建适当数量的图像,但不会完成相关的用户参考。有没有办法像我尝试的那样使用 fields_for 完成此操作(因此关联已完成)?
香蕉模型
class Banana < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
has_many :images, dependent: :destroy
accepts_nested_attributes_for :images
validates_associated :images
end
图像模型
class Image < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
belongs_to :banana
validates_presence_of :banana
has_attached_file :img
end
形式
<%= form_for @banana, :validate => true, :html => { :multipart => true } do |f| %>
<!-- <input type="file" name="banana[images_attributes][][img]" multiple />-->
<%= f.fields_for 'images_attributes[]', @banana.images do |builder| %>
<%= builder.file_field :img, multiple: true %>
<% end %>
<% end %>
控制器
class BananasController < ApplicationController
def create
@banana = current_user.bananas.build(banana_params)
render :new unless @banana.save
end
def new
@banana = Banana.new
end
private
def banana_params
params.required(:banana).permit(images_attributes: [:img])
end
end