【发布时间】:2012-02-06 04:16:59
【问题描述】:
我有一个嵌套表单,我希望表单字段只出现一次以上传新图像,然后显示现有图像,没有任何类型的 CRUD 功能。本质上,在编辑页面上,只提供添加图像的选项,而不是删除或更新。
关系是video 有很多video_images,其中has_attached_file :image 使用回形针我现在在我的控制器中尝试以下操作:
# GET /videos/new
# GET /videos/new.json
def new
@video = current_user.videos.build
@newthumbnail = @video.video_images.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @video }
end
end
在我看来:
<%= f.fields_for @newthumbnail do |u| %>
<%= u.label :image, "Upload New Thumbnail" %> <br />
<%= u.file_field :image, :class => "image_uploader" %>
<% end %>
<p>
Or select a previous thumbnail
</p>
<div id="previous_thumbnails">
<!-- These will ultimately be dynamically generated as the existing image associations -->
<div class="previous_thumbnail" rel="1">
<img src="http://placehold.it/120x90" />
</div>
<div class="selected previous_thumbnail" rel="2">
<img src="http://placehold.it/120x90" />
</div>
<div class="previous_thumbnail" rel="3">
<img src="http://placehold.it/120x90" />
</div>
<div class="previous_thumbnail" rel="4">
<img src="http://placehold.it/120x90" />
</div>
</div>
但我最终得到以下错误:
unknown attribute: video_image
这告诉我,在某个地方,对单一性与复数的误译存在差异。我可以理解为什么 Rails 会单数化它,因为它实际上是一个单一的条目。但是,即使覆盖文件字段的名称,并将name="video[video_image][image]" 变为name="video[video_images][image]",我也会收到如下错误:
VideoImage(#39741260) expected, got Array(#9591480)
发送参数:
"video_images"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x000000054f1078 @original_filename="Bill OneManBand.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"video[video_images][image]\"; filename=\"Bill OneManBand.jpg\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/tmp/RackMultipart20120205-3582-1xp2duq>>},
那么我哪里错了?我觉得我可能对此采取了错误的方法......
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 forms nested paperclip