【问题标题】:How to display images with CarrierWave in Sinatra如何在 Sinatra 中使用 CarrierWave 显示图像
【发布时间】:2019-11-30 05:58:21
【问题描述】:

我在使用 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>

当我从计算机上传图像时,我似乎无法显示图像。就好像图像没有保存在任何地方,因此无法检索。

锚标记正确地引用了图像应该在的位置,但没有图像。

我做错了什么?

【问题讨论】:

  • 不要把解决方案放在你的问题中。 SO 不是留言板,它更像是在线问答参考或食谱。因此,问题和答案是分开的,必须分开。见meta.stackoverflow.com/a/271399/128421meta.stackoverflow.com/q/267434/128421
  • 谢谢,我知道了。但显然我的答案太长而无法作为评论发表,所以我不得不进行编辑。但请记住,谢谢
  • 我现在才发现你可以按“回答你的问题”,所以我猜我有点厚
  • “谢谢,我知道。但显然我的回答太长了,无法作为评论发表,所以我不得不进行编辑。”?不。该网站有理由强制执行某些事情。 SO希望您参加巡回演出,当您参加旅行时,他们会奖励您积分,从而为您提供新的特权。这是一根棍子上的胡萝卜。请通过Stack Overflow tour

标签: sinatra carrierwave datamapper


【解决方案1】:

为@MrMos 转换为answer...

没关系,我发现了。我这样做了:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2020-05-20
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    相关资源
    最近更新 更多