0
我的超簡單Sinatra應用程序是一個筆記列表,每個筆記都有一個附加的圖像。Sinatra/Carrierwave:如何在使用現有圖像的同時更新記錄?
我已經設置了一個'put'路線,可以讓我更新筆記,但是除非我重新上傳圖像,否則我會丟失它(note.image在提交表單時設置爲'nil')。
在此先感謝您的幫助!
這是我上傳:
class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::MimeTypes
process :set_content_type
storage :fog
end
這裏是我的筆記類:
class Note
include DataMapper::Resource
property :id, Serial
property :image, String, :auto_validation => false
property :content, Text, :required => true
property :created_at, Date
property :updated_at, Date
mount_uploader :image, MyUploader
end
這是我的 '把' 路線:
put '/:id' do
n = Note.get params[:id]
unless n
redirect '/', :error => "Can't find that note."
end
n.image = params[:image]
n.credit = params[:content]
n.date = params[:date]
n.updated_at = Time.now
if n.save
redirect '/', :notice => 'Note updated successfully.'
else
redirect '/', :error => 'Error updating note.'
end
end
而且這裏是我使用的形式更新說明:
<% if @note %>
<form action="/<%= @note.id %>" method="post" id="edit" enctype="multipart/form-data">
<input type="hidden" name="_method" value="put">
<p><input type="text" name="credit" value="<%=h @note.content %>"></p>
<p><input type="file" name="image" /></p>
<br><br>
<input type="submit">
</form>
<% else %>
<p>Note not found.</p>
<% end %>