簡體   English   中英

載波文件上傳

[英]Carrierwave File Upload

我正在嘗試使用railcasts.com Jquery File Upload建議的多個文件上傳。 我已經進行了測試,但是似乎每次刷新服務器時都看不到任何東西,在以下瀏覽器中我得到了

  • google:空白圖標
  • Firefox:文字“ / assets /

我的文件夾中似乎什么也沒有上傳。 我希望我的圖片成為上傳者的地方是public / upload /:imageid

這是我的代碼上傳器

class AimageUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper
  storage :file
  def store_dir
    "uploads/#{model.id}"
  end
  version :thumb do
    process :resize_to_fill => [200, 200]
  end
  def extension_white_list
    %w(jpg jpeg gif png)
  end   
end

視圖

<div><%= image_tag(ad.aimage_url(:thumb)) %></div>

我錯過了一步嗎?

模型

# == Schema Information
#
# Table name: ads
#
#  id               :integer          not null, primary key
#  name             :string(255)
#  aimage           :string(255)
#  created_at       :datetime         not null
#  updated_at       :datetime         not null
#  advertisement_id :integer
#

class Ad < ActiveRecord::Base
  attr_accessible :aimage, :advertisement_id, :name
  mount_uploader :aimage, AimageUploader
end

查看index.html.erb

<% @ads.each do |ad| %>
  <div><%= ad.name %></div>
  <%= image_tag(ad.aimage_url(:thumb)) if ad.aimage? %>
  <div>
    <%= link_to 'Show', ad %>
    <%= link_to 'Edit', edit_ad_path(ad) %>
    <%= link_to 'Destroy', ad, method: :delete, data: { confirm: 'Are you sure?' } %>
  </div>
<% end %>
<br />

<%= form_for Ad.new do |f| %>
  <div><%= f.label :aimage, "Upload advertisement:" %></div>
  <div><%= f.file_field :aimage, multiple: true, name: "advertisement[aimage]" %></div>
<% end %>

控制者

class AdsController < ApplicationController
  def index
    @ads = Ad.all
  end
  def show
    @ad = Ad.find(params[:id])
  end
  def new
    @ad = Ad.new
  end
  def edit
    @ad = Ad.find(params[:id])
  end
  def create
    @ad = Ad.create(params[:ad])
    if @ad.save
      flash[:notice] = "Successfully created advertisement."
      redirect_to root_url
    else
      render :action => 'new'
    end
  end
  def destroy
    @ad = Ad.find(params[:id])
    @ad.destroy
  end
end

JavaScript ads.js.coffee

jQuery ->
  $('#new_ad').fileupload()

對我來說看起來不錯!

您的上傳器是否安裝在模型上? 如果沒有,請嘗試

mount_uploader :image, AimageUploader

並且在您看來,設置多選選項

<%= f.file_field :image, multiple: true, name: "model_name[image]" %>

我建議你使用回形針

創建一個名為Image的模型,如下所示:

class Image < ActiveRecord::Base
  has_attached_file :file
end

假設用戶模型將具有多個圖像:

class User < ActiveRecord::Base
  has_many :images
end

您可以使用單獨的image_controller來處理文件上傳

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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