フォームフィールドは、新しいイメージをアップロードするために一度しか表示されないようにするためにネストされたフォームを持ち、CRUD機能なしで既存のイメージを表示します。本質的には、編集ページで、画像を追加するオプションを与えますが、削除や更新はできません。新しいエントリのためにネストされたフィールドのみを構築する
関係は、私は今、私のコントローラで次しようとしているhas_attached_file :image
用クリップを使用video
持つ多くのvideo_images
、次のとおりです。私の見解で
# 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がなぜそれを単独で扱うのか、それは実際には単一のエントリであることが分かります。送信されたparamsと共に、
VideoImage(#39741260) expected, got Array(#9591480)
:しかし、たとえファイルのフィールドの名前をオーバーライドし、name="video[video_images][image]"
にname="video[video_image][image]"
を作り、私はそうのようなエラーが出る
"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>>},
だから私は間違っているんですか?私はこの
は、フィールドが、彼らはの一部だということを知っている必要があります。この<%= f.fields_for :video_images, @newthumbnail do |u| %>
に
<%= f.fields_for @newthumbnail do |u| %>
私はこれに間違ったアプローチを取ることもできるように感じる...
これまでの構文を見ていて、それを調べていませんでした。もし私が持っていたら、私に多くの時間を節約できたでしょうか。ありがとう! –