![](/img/trans.png)
[英]Sinatra/Carrierwave: how to update a record while using an existing image?
[英]How to display images with CarrierWave in Sinatra
我在 CarrierWave 上遇到了很多困難,所以我做了一個小程序,看看我是否能做到這一點:
require 'sinatra'
require 'dm-core'
require 'dm-migrations'
require 'carrierwave/datamapper'
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
end
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/photogallery.sqlite3")
class Image
include DataMapper::Resource
property :id, Serial
property :title, Text
mount_uploader :image, ImageUploader
end
DataMapper.finalize
DataMapper.auto_migrate!
get "/" do
@images = Image.all
erb :index
end
post "/" do
image = Image.new(:title => params[:title])
image.image = params[:image]
image.save
redirect "/"
end
__END__
@@ index
<% @images.each do |image| %>
<p>
<%= image.title %>
</p>
<a href="<%= image.image.url %>">
<img src="<%= image.image.url %>">
</a>
<% end %>
<form action="/" method="post">
<label for="title">Title</label>
<input type="text" name="title"><br>
<label for="image">Image</label>
<input type="file" name="image"><br>
<input type="submit" value="Save">
</form>
當我從計算機上傳圖像時,似乎無法顯示圖像。 就好像圖像沒有保存在任何地方,因此無法檢索。
錨標記正確地引用了圖像應該在的位置,但沒有圖像。
我究竟做錯了什么?
轉換為@MrMos 的答案...
沒關系,我發現了。 我這樣做了:
require 'sinatra'
require 'dm-core'
require 'dm-migrations'
require 'carrierwave/datamapper'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
class ImageUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
'images'
end
end
class Image
include DataMapper::Resource
property :id, Serial
property :title, Text
mount_uploader :file, ImageUploader
end
DataMapper.finalize
DataMapper.auto_migrate!
get '/' do
@images = Image.all
erb :index
end
post '/' do
Image.create(params[:image])
redirect to('/')
end
__END__
@@ index
<!DOCTYPE html>
<html>
<body>
<form action="/" method="post" enctype="multipart/form-data"></div>
<input type="text" name="image[title]" />
<input type="file" name="image[file]" />
<input type="submit" name="submit" value="Upload" />
</form>
<% @images.each do |image| %>
<p><%= image.title %></p>
<img src="/images/<%= images.file_identifier %>" />
<% end %>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.