1
我有一個應用程序,用戶可以創建一個gallery
,他/她可以附上一些圖片。我使用carrierwave來達到這個目的,它的結構如下。 每個gallery
有許多pictures
和每個picture
有1 image
。RoR:嵌套字段形式
class Gallery < ActiveRecord::Base
has_many :pictures, dependent: :destroy
accepts_nested_attributes_for :pictures, allow_destroy: true;
end
class Picture < ActiveRecord::Base
belongs_to :gallery
mount_uploader :image, ImageUploader
end
圖片上傳與下面的表格
<%= form_for(@gallery, html: {multipart: true}) do |f| %>
<%= f.label :title %><br />
<%= f.label :pictures %><br />
<% if @gallery.pictures %>
<ul class="form-thumbs clearfix">
<% @gallery.pictures.each do |picture| %>
<li>
<%= image_tag(picture.image) %>
<%= link_to "Delete", gallery_picture_path(@gallery, picture), method: :delete %>
</li>
<% end %>
</ul>
<% end %>
<%= file_field_tag "images[]", type: :file, multiple: true %>
<% end %>
然後加工具有以下作用
class GalleriesController < ApplicationController
def create
@gallery = Gallery.new(gallery_params)
if @gallery.save
if params[:images]
params[:images].each do |image|
@gallery.pictures.create(image: image)
end
end
end
end
end
這一切運作良好,但現在我想補充一個嵌套場:title
,這樣當我打開表格,並且有圖片上傳時,我可以給每張圖片標題。任何人都可以解釋我如何適應現有的形式?
謝謝你的回答豐富。即使'圖片'表中存在'標題'列,我也會在#<圖片::ActiveRecord_Associations_CollectionProxy:0x007f1ee01d7c10>中得到以下錯誤'未定義方法'標題' – sjbuysse
如果刪除'p.text_field:title '測試? –
或多或少,我現在可以加載表格,但是當我提交時我沒有創建圖片(我也沒有在你寫的動作中看到它) – sjbuysse