rails中实现上传功能

简介:
在rails中实现上传文件的实现非常的简单
步骤:
通过一个例子来做(winxp,rails 1.2.5):
rails demo -d mysql
cd demo
mysqladmin -u root create demo_development
1.使用插件
安装attechment_fu插件:
ruby script/plugin install [url]http://svn.techno-weenie.net/projects/plugins/attachment_fu/[/url]

2.生成model

ruby script/generate model mugshot
3.编辑迁移文件001_create_mugshots.rb

class CreateMugshots < ActiveRecord::Migration
  
  def self.up
    create_table :mugshots do |t|
      t.column :parent_id,  :integer
      t.column :content_type, :string
      t.column :filename, :string    
      t.column :thumbnail, :string 
      t.column :size, :integer
      t.column :width, :integer
      t.column :height, :integer
    end
  end

  def self.down
    drop_table :mugshots
  end
end

----
4.执行迁移任务:
rake db:migrate
5.修改Model, mugshot.rb
class Mugshot < ActiveRecord::Base
  
  has_attachment :storage => :file_system
 

  validates_as_attachment

end


5.创建控制器:
ruby script/generate controller mugshots


class MugshotsController < ApplicationController
def new
  @mugshot = Mugshot.new
end

def create
  @mugshot = Mugshot.new(params[:mugshot])
  if @mugshot.save
    flash[:notice] = 'Mugshot was successfully created.'
    redirect_to :action=>"new"     
  else
    render :action => :new
  end
end

end


--创建new模板:
<%= error_messages_for :mugshot %>

<% form_for(:mugshot, :url => {:action=>"create"}, 
                      :html => { :multipart => true }) do |f| -%>
  <p>
    <label for="mugshot">Upload A Mugshot:</label>
    <%= f.file_field :uploaded_data %>
  </p>
  <p>
    <%= submit_tag 'Create' %>
  </p>
<% end -%>


--没什么问题应该可以运行了
ruby script/server
[url]http://localhost:3000/mugshots/new[/url]

上传的文件会保存在\public\mugshots中!




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/102271,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
jenkins 持续交付 API
上传gitlab代码后jenkins自动进行发布的配置
上传gitlab代码后jenkins自动进行发布的配置
34 1
|
1月前
从0-1实现文件下载CLI工具(2)
示例代码5 Proxy 部分资源访问不顺畅的时候,通常会走服务代理(🪜) 以谷歌的logo资源链接https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png 要让前面的方法downloadByUrl顺利执行,就需要其走代理服务
|
1月前
|
存储
从0-1实现文件下载CLI工具(1)
前言 在日常学习/生活中,下载资源时,大部分情况是通过别人分享的资源站点,找到下载入口然后触发下载。 当资源通过url传播的时候,一般也是直接打开,通过浏览器触发下载。 资深的冲浪选手,一般会用一些客户端工具(还记得Win上的各种下载器),Mac上笔者有时候会使用 NeatDownloadManager,无 🪜 时也能拥有不错的下载速度
|
1月前
|
存储
从0-1实现文件下载CLI工具(3)
参数转换传递 下面是defaultCommand的逻辑,只需要将相关参数处理后透传给定义的download方法即可,option 不支持 number 所以需要对数字字符串做一些转换
|
数据挖掘
Rstudio--后台提交代码任务的简单实现-callr
本文分享了一种在R语言同一个会话中异步运行子任务的实现方法,以供参考学习
155 0
|
jenkins 持续交付 数据安全/隐私保护
jenkins配置第三方插件 gitee并且构建 python代码
jenkins配置第三方插件 gitee并且构建 python代码
|
Java jenkins 持续交付
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
|
API 开发工具 git
如何手写一个 webpack 插件:实现 vuecli3 打包时生成一个 git 分支版本信息的文件?
如何手写一个 webpack 插件:实现 vuecli3 打包时生成一个 git 分支版本信息的文件?
225 0
如何手写一个 webpack 插件:实现 vuecli3 打包时生成一个 git 分支版本信息的文件?
|
PHP
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
444 0
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
|
jenkins Linux Shell
iOS 底层原理38:自动化打包(二)Jenkins + GitLab 实现自动打包
iOS 底层原理38:自动化打包(二)Jenkins + GitLab 实现自动打包
1872 0
iOS 底层原理38:自动化打包(二)Jenkins + GitLab 实现自动打包