2008-04-23

宝典:第四式 图片上传插件Acts As Attachment

关键字: actsasattachment 上传 rails
开始也是下载
在项目目录下面运行

script/plugin source http://svn.techno-weenie.net/projects/plugins

然后是安装
script/plugin install acts_as_attachment

创建dvd_cover模型
script/generate attachment_model dvd_cover


    create_table :dvd_covers do |t|
      t.column "dvd_id", :integer
      t.column "content_type", :string
      t.column "filename", :string     
      t.column "size", :integer
      t.column "parent_id",  :integer 
      t.column "thumbnail", :string
      t.column "width", :integer  
      t.column "height", :integer
    end


数据库重新rake下

rake db:migrate


下面在把生成的模型DvdCover中的代码替换成这个(全部替换下就好了)
class DvdCover < ActiveRecord::Base
  belongs_to :dvd
  acts_as_attachment :storage => :file_system, :max_size => 300.kilobytes, :content_type => :image
  validates_as_attachment
end


让后下面的自己去写下吧(分开了反而看不清楚)
## app/controllers/dvd_covers_controller.rb
class DvdCoversController < ApplicationController
  def index
    @dvd_covers = DvdCover.find(:all)
  end

  def new
    @dvd_cover = DvdCover.new
  end

  def show
    @dvd_cover = DvdCover.find params[:id]
  end

  def create
    @dvd_cover = DvdCover.create! params[:dvd_cover]
    redirect_to :action => 'show', :id => @dvd_cover
  rescue ActiveRecord::RecordInvalid
    render :action => 'new'
  end
end

## app/views/dvd_covers/index.rhtml
<h1>DVD Covers</h1>

<ul>
<% @dvd_covers.each do |dvd_cover| -%>
  <li><%= link_to dvd_cover.filename, :action => 'show', :id => dvd_cover %></li>
<% end -%>
</ul>

<p><%= link_to 'New', :action => 'new' %></p>

## app/views/dvd_covers/new.rhtml
<h1>New DVD Cover</h1>

<% form_for :dvd_cover, :url => { :action => 'create' }, :html => { :multipart => true } do |f| -%>
  <p><%= f.file_field :uploaded_data %></p>
  <p><%= submit_tag :Create %></p>
<% end -%>

## app/views/dvd_covers/show.rhtml
<p><%= @dvd_cover.filename %></p>
<%= image_tag @dvd_cover.public_filename, :size => @dvd_cover.image_size %>
评论
发表评论

您还没有登录,请登录后发表评论

sayid2008
搜索本博客
最近加入圈子
存档
最新评论