rails paperclip
来源:互联网 发布:手机淘宝个人主页标签 编辑:程序博客网 时间:2024/06/01 07:31
1、安装gem "paperclip"
2、上传图片。需要在计算机上安装ImageMagick软件,该软件可识别各种格式的图片,并可以裁剪图片,如果上传的是文件,则不需要安装
在存放图片的表中添加字段,前缀可自己定义。我们使用的前缀是avatar
<attachment>_file_name
<attachment>_file_size
<attachment>_content_type
<attachment>_updated_at
如果你的表已经设计好,但是没有这些字段,可通过 rails generate paperclip user avatar生成,user是你的model名,avatar是字段前缀名,
此时会生成一个
class AddAvatarColumnsToUsers < ActiveRecord::Migration
def self.up
add_attachment :users, :avatar
end
def self.down
remove_attachment :users, :avatar
end
end
这样的文件,运行该文件,这四个字段会自动添加到数据库中model中
class User < ActiveRecord::Base has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"endavatar为前缀名_from中
<%= form_for @user,:html=>{ :multipart=>true } do|form|%>
<%= form.file_field:avatar%>
<% end %>
controller层
def create @user = User.create( user_params )end
privatedef user_params params.require(:user).permit(:avatar)end显示的view 中
<%= image_tag @user.avatar.url %>
一对多级联保存图片
首先建立两个表
案例:部门与图片是一对多的关系。即一个部门记录可包含多个图片,图片的保存完全由部门控制。意思是添加部门时为部门上传多张图片,但是图片保存在图片的表中
model中
class Department < ActiveRecord::Base has_many :pictures
accepts_nested_attributes_for :pictures
end
class Picture < ActiveRecord::Base belongs_to :department,class_name: 'Department' has_attached_file :data, :styles => {:small => 'x100', :large => '100x100>'}, :default_url => "/images/:style/missing.png"end
controller中:
def department_params
params.require(:department).permit(:name, :no, :parent_id, :description,pictures_attributes: [:data])
end
view中添加
<%= f.simple_fields_for :pictures do |pictures_form|%>
<%= pictures_form.file_field :data %>
<% end %>
<%= simple_form_for(@department,:html => { :multipart => true,class:'form-horizontal' }) do |f| %>即可
对上传到的多张附件进行级联删除,即删除department记录时也删除掉和它关联的所有picture
其实很简单,只需要在model中添加一句
has_many :pictures,dependent: :delete_all
便可删除成功
- rails paperclip
- rails应用paperclip
- rails rails_kindeditor paperclip
- rails rails_kindeditor paperclip
- window中rails用paperclip报错
- rails为paperclip上传文件添加访问控制
- Ruby on Rails邮件Mailer和上传附件paperclip
- Rails使用paperclip报CommandNotFoundError错的解决
- Paperclip::NotIdentifiedByImageMagickError
- paperclip-qiniu
- cygwin下使用paperclip
- paperclip upload from url
- 文件上传插件paperclip
- paperclip多文件上传
- Rails
- Rails
- Rails
- rails
- Twitter 背后的技术
- Oracle undo 表空间管理
- java开发中如何获取远程文件的大小
- php CGI SAPI
- Java 多线程编程之一 进程与线程,并发和并行的区别
- rails paperclip
- hibernate基本配置
- 数字加字母 验证码
- Spring的bean、dao、service、action的生命周期
- Android usb camera设备添加
- FastCGI
- 酷站欣赏:分享13个五彩缤纷的国外网站作品
- java.lang.IllegalArgumentException: node to traverse cannot be null! 处理方法
- C# 异常"关于对象不能从DBNull转换为其他类型"