簡體   English   中英

如何在 Sinatra 中使用 CarrierWave 顯示圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM