`
xinlanzero
  • 浏览: 253067 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

rails文件上传插件 acts_as_attachment 的实例

    博客分类:
  • Ruby
 
阅读更多

参考自:http://weblog.techno-weenie.net/articles/acts_as_attachment
重点词:acts_as_attachment 、validates_as_attachment、uploaded_data
环境:InstantRails-2.0-win

1.创建rails工程及数据库


rails acts_as_attachment_test -d sqlite3
cd acts_as_attachment_test
rake db:create:all


2.安装插件acts_as_attachment


ruby script\plugin install http://svn.techno-weenie.net/projects/plugins/acts_as_attachment


3.生成迁移代码并且执行数据库迁移命令生成数据库


ruby script/generate attachment_model file_list
rake db:migrate


4.修改app\models\file_list.rb文件如下,更详细的限制文件大小、类型==参考vendor\plugins\acts_as_attachment\lib\technoweenie\acts_as_attachment.rb文件27-38行


##app\models\file_list.rb
class FileList < ActiveRecord::Base
  acts_as_attachment :storage => :file_system ,:file_system_path => 'public/files'
  validates_as_attachment
end


5.创建控制器、方法及修改


ruby script\generate controller file index new show create


修改app\controllers\file_controller.rb文件如下


##app\controllers\file_controller.rb
class FileController < ApplicationController

  def index
    @file = FileList.find(:all)
  end

  def new
    @file = FileList.new
  end

  def show
    @file = FileList.find(params[:id])
  end

  def create
    @file = FileList.create (params[:file])
    redirect_to :action => 'show' ,:id => @file
    rescue ActiveRecord::RecordInvalid
    render :action => 'new'
  end

end


修改app\views\file\index.html.erb文件如下


<!--##app\views\file\index.html.erb-->
<h1>file</h1>
<ul>
<% @file.each do |f| -%>
  <li><%= link_to f.filename, :action => 'show', :id => f %></li>
<% end -%>
</ul>
<p><%= link_to 'New', :action => 'new' %></p>


修改app\views\file\show.html.erb文件如下


<!--##app\views\file\show.html.erb-->
<p><%= @file.filename %></p>
<%= image_tag @file.public_filename, :size => @file.image_size %>
<p><%= link_to 'Index', :action => 'index' %></p>


修改app\views\file\new.html.erb文件如下


<!--##app\views\file\new.html.erb-->
<h1>New file</h1>
<% form_for :file, :url => { :action => 'create' }, :html => { :multipart => true } do |f| -%>
  <p><%= f.file_field :uploaded_data %></p>
  <p><%= submit_tag '提交' %></p>
<% end -%>


6.启动服务,测试效果


start mongrel_rails start -p 3000
start http://127.0.0.1:3000/file

 

分享到:
评论

相关推荐

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...

    acts_as_authenticated

    "acts_as_authenticated" 是一个经典的Ruby on Rails插件,它为Rails应用提供了用户认证功能。在Rails框架中,用户认证通常涉及验证用户身份、管理会话以及处理登录和登出等操作。acts_as_authenticated插件简化了这...

    用acts_as_rateable实现简单的打分功能

    在Ruby on Rails框架中,`acts_as_rateable`是一个非常实用的插件,它允许用户对模型进行评分,从而实现简单的打分功能。这个插件是Rails社区中的一个开源项目,旨在简化应用中的评分系统集成。在本篇讨论中,我们将...

    acts_as_paranoid

    "acts_as_paranoid" 是一个在Ruby on Rails框架中常用的gem,用于处理数据库记录的软删除(soft delete)。在数据库操作中,通常我们会遇到删除数据的需求,但直接删除可能会导致数据丢失,尤其是在生产环境中。...

    acts_as_category:想想acts_as_tree +权限

    #ActsAsCategory acts_as_category (Version 2.0 beta)acts_as_category,是acts_as插件在acts_as_tree风格的Ruby on Rails的ActiveRecord的模式,但有一些额外的功能,以及多种便捷视图助手。例子(有关实例方法和...

    acts_as_nested_set的增强版BetterNestedSet

    acts_as_nested_set是Rails社区中广泛使用的Nested Set库,而BetterNestedSet则是它的增强版,提供了更多功能和优化。本文将深入探讨BetterNestedSet的原理、用法以及相较于acts_as_nested_set的优势。 1. Nested ...

    acts_as_paranoid:ActiveRecord插件可让您隐藏和还原记录,而无需实际删除它们

    使徒行传 一个Rails插件来添加软删除。...用法安装gem: gem 'acts_as_paranoid' , '~&gt; 0.7.0' bundle install创建迁移bin/rails generate migration AddDeletedAtToParanoiac deleted_at:datetime:index启用ActsAs

    actions_as_commentable:ActiveRecord acts_as_commentable插件

    gem 'acts_as_commentable' Rails gem 'acts_as_commentable' , '3.0.1' Rails gem 'acts_as_commentable' , git: 'git@github.com:jackdempsey/acts_as_commentable.git' , branch: '2.x' 生成器 Rails 3+ ...

    acts_as_liked:向任何 Active Record 模型添加类似功能

    $ rails generate acts_as_liked 并且不要忘记迁移您的数据库 $ rake db:migrate 用法 可爱的模特 将acts_as_likeable添加到任何模型,它的实例可以被其他模型喜欢。 class Post &lt; ActiveRecord :: Base ...

    acts_as_restful_list:就像acts_as_list一样,但很安静

    acts_as_restful_list 就像acts_as_list 一样,但不必使用非标准方法调用(如insert_at)来弄乱您的代码,acts_as_restful_list 使管理列表变得简单。 您可以像更新其他任何内容一样更新 position 属性,其余的都...

    acts_as_xapian:Xapian全文搜索插件,适用于Ruby on Rails

    《acts_as_xapian:为Ruby on Rails打造的Xapian全文搜索引擎插件》 在Web开发领域,全文搜索引擎能够极大地提升用户对信息的检索效率,对于内容丰富的应用尤其重要。Ruby on Rails作为流行的Web框架,有着众多的...

    Api-acts_as_api.zip

    Api-acts_as_api.zip,使在rails中创建api响应变得简单和有趣,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程...

    acts_as_commentable_with_threading:类似于acts_as_commentable; 然而,利用 awesome_nested_set 提供线程评论

    作为可评论行为(现在有评论线程(TM)!!!——在(TM)上开玩笑) 允许将线程注释添加到多个不同的模型。 与acts_as_commentable 兼容(但需要更改数据库架构) ... rails generate acts_as_commentable_with_

    acts_as_aliased:扩展 ActiveRecord

    rails generate acts_as_aliased:install rake db:migrate 这将创建一个新表aliases 。 用法 假设您有一个需要别名的模型Company ,因为公司名称有不同的版本。 使用acts_as_aliased在模型中启用别名: model ...

    用于过滤英文脏话的 Rails 插件 gem_Ruby_代码_相关文件_下载

    标题提到的"用于过滤英文脏话的 Rails 插件 gem"正是为了解决这个问题。这个插件允许开发者通过简单的配置,对输入的文本进行检查和替换,确保网站内容的清洁度和专业性。 这个插件名为`profanity_filter`,它是一...

    acts_as_favoritable:该插件提供了一种跟踪用户收藏夹的简单方法

    $ rails generate acts_as_favoritable:migration $ rake db:migrate 用法 有利模式 贡献 叉它 创建功能分支( git checkout -b my-new-feature ) 提交更改( git commit -am 'Add some feature' ) 推送到分支...

    偏执狂:Rails 3、4和5的acts_as_paranoid

    偏执狂将继续接受错误修复并支持Rails的新版本,但不接受新功能。 偏执狂 偏执狂是Rails 3/4/5的的重新实现,使用的代码少得多。 当您的应用程序使用偏执狂时,在ActiveRecord对象上调用destroy并不会真正破坏...

    Secode_level_cache.zip

    Rails的ActiveRecord自身没有带强大的对象缓存功能,这是AR的一个重大的遗憾。早在2008年开始,我们就借鉴了Java强大的ORM 框架... acts_as_cached(:version =&gt; 1, :expires_in =&gt; 1.week) end 标签:Secode

    acts_as_shopping_cart:简单的购物车实施

    acts_as_shopping_cart 一个简单的购物车实现。 您可以找到示例应用程序。 安装 滑轨3 从0.2.0版开始,不再支持Rails 3。 如果您仍需要在Rails 3应用程序中实现此gem,请使用0-1-x分支 将其包含在您的Gemfile中 ...

    acts_as_owner.rb:Rails 的简单所有权解决方案

    Acts as owner 是 Ruby on Rails 的一个插件,它为所有者对象提供了自我查询可拥有对象的所有权的能力。 可拥有对象可以是属于所有者对象的任何对象和属于可拥有对象的任何对象。 属于拥有的可拥有的父代的任何可...

Global site tag (gtag.js) - Google Analytics