ユーザーがテキストと写真を追加できる製品ページがあります。製品はモデルであり、写真もそうです。当然、各写真には製品が必要です。そのため、製品を送信する前に写真にサムネイルを表示したいと考えています。
するべきか...
- この写真をセッションに保存する方法を見つけてください (これは Rails で可能ですか?)
- または、別のモデルを作成してこの写真を一時的に保存し、AJAX で即座に読み込みます
PS私はgem 'paperclip'を使用しています
編集: new.html.haml
= form_for @product,:url => products_path, :html => {:multipart => true } do |f|
- if @product.errors.any?
.error_messages
%h2 Form is invalid
%ul
- for message in @product.errors.full_messages
%li
= message
- if @photo.errors.any?
.error_messages
%h2 Image is invalid
%ul
- for message in @photo.errors.full_messages
%li
= message
%p
= f.label :name
= f.text_field :name
%p
= f.label :description
= f.text_field :description
%p
= f.fields_for :photos do |fp|
=fp.file_field :image
%br
%p.button
= f.submit
製品コントローラー
def new
@product = Product.new
@photo = Photo.new
# 4.times{ @product.photos.build }
@product.photos.build
end
def create
@product = current_user.products.new(params[:product])
@photo = current_user.photos.new(params[:photo])
if @product.valid?
@product.save
@photo.product_id = @product.id
@photo.save
render "show", :notice => "Sale created!"
else
# 4.times{ @product.photos.build }
@product.photos.build
render "new", :notice => "Somehting went wrong!"
end
end