- 浏览: 300909 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
使用carrierwave插件保存附件:
创建attachments多态表来实现附件的存储关联。
migration
model
AttachmentUploader
controller
view
创建attachments多态表来实现附件的存储关联。
gem 'carrierwave'
migration
class CreateAttachments < ActiveRecord::Migration[5.0] def change create_table :attachments do |t| t.string :attachment_entity_type, limit: 64 t.integer :attachment_entity_id t.string :path, comment: '文件类容' t.string :name, comment: '文件名' t.string :content_type, comment: '文件类型' t.integer :file_size, comment: '文件大小' t.integer :created_by, comment: '上传人' t.timestamps end end end create_table "blogs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "title" t.text "content" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "cover_img", comment: "封面" t.integer "category_id", comment: "类型" t.integer "view_count", comment: "文章访问次数" t.integer "seq", default: 10, comment: "顺序" end
model
class Attachment < ApplicationRecord #定义多态 belongs_to :attachment_entity, polymorphic: true, optional: true #继承CarrierWave方法 mount_uploader :path, AttachmentUploader before_save :set_fields def set_fields self.content_type = path.content_type self.file_size = path.size self.name = path.get_original_filename end def delete_company_attachment_it self.destroy true end def attachment_path path.url end end class Blog < ApplicationRecord # 关联多态 has_many :attachments, as: :attachment_entity belongs_to :category, optional: true has_many :comments def user_name "@#{self.title}" end def self.view_count_top order(view_count: :desc).limit(5) end def cover_img_path self.cover_img ? Attachment.find(self.cover_img.to_i).path.url : "/assets/f10.jpg" end end
AttachmentUploader
class AttachmentUploader < CarrierWave::Uploader::Base def store_dir "uploads/#{model.attachment_entity_type.to_s.underscore}/#{mounted_as}/#{model.id}" end end
controller
def create @blog = Blog.new(blog_params) attachment = Attachment.create(attachment_entity_type: "Blog",attachment_entity_id: @blog.id , path: params[:draft_img], created_by: 1 ) @blog.cover_img = attachment.id @blog.save end
view
<%= form_for @blog, url: url, method: meth, :html => { :multipart => true } do |f| %> <div class="field"> <%= file_field_tag "draft_img", id: 'draft_img' %> <%= f.text_field :title, class: 'form-control input-sm', style: 'width: 280px;' %> <%= text_area_tag 'blog[content]', @blog.content %> </div> <%= f.submit :class=>"ui primary button"%> <% end %>
发表评论
-
git仓库创建
2020-09-04 15:33 708推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 475nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 890业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 837class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 564require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 530针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1156<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 970gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 668def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 730sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 926链接参数中添加token def self.query_p ... -
rails错误日志记录
2018-12-19 14:41 759Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 1038tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 1017例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 442关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1161def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1085[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1384登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1179pdf&excell&png # rend ...
相关推荐
ruby利用pop3下载附件
carrierwave-aliyun, 阿里云 OSS Ruby 上传组件,基于 Carrierwave
使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库...
阿里云_OSS_Ruby_上传组件,基于_Carrierwave_carrierwave-aliyun
Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...
在Ruby中使用QTGui工具包,开发者可以利用Ruby的简洁语法和动态特性,同时享受到QT提供的强大GUI设计能力。通过qtbindings,Ruby程序员可以直接调用QT的类和方法,创建复杂的窗口应用、控件、布局和信号与槽机制,而...
JSON库在Ruby中的使用主要包括两个主要功能:解析(parsing)和生成(generation)。解析是指将JSON格式的字符串转换为Ruby对象,而生成则是将Ruby对象转换为JSON格式的字符串。 1. **解析JSON**: 在Ruby中,可以...
在Ruby编程语言中,处理邮件和附件是一项常见的任务,特别是在构建Web应用或自动化脚本时。"ruby收取附件"这个标签表明我们关注的是如何在Ruby环境中接收和处理电子邮件中的附件。下面将详细介绍Ruby中处理邮件附件...
1. **Ruby on Rails框架**:Ruby上传文件通常是在Ruby on Rails框架下进行的,这是一个用于快速开发Web应用的全栈框架,它遵循MVC(模型-视图-控制器)架构模式。 2. **Controller**:在Rails中,控制器负责处理...
这是一个简单的Rails应用程序,显示了如何使用CarrierWave和WebP-ffi(用Ruby编写的libwebp包装器)将图像转换为WebP格式。 笔记 如果需要在不使用CarrierWave版本的情况下转换图像,则可以使用相同的方法而无需重写...
在Ruby的世界里,初学者可能会感到有些陌生,但掌握其基本使用流程将为你的编程旅程打下坚实的基础。本文将详细解析"ruby初始使用过程",帮助你快速上手。 首先,我们需要设置好开发环境。在Windows系统中,通常会...
shrine, ruby 应用程序的文件附件工具包 神殿Shrine是 ruby 应用程序中文件附件的工具包。如果你不确定为什么要小心,那么鼓励你阅读的动机,创建神殿的Shrine 。资源文档:shrinerb.com源:github....
Ruby Ruby Ruby Ruby Ruby Ruby
在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build`来编译和安装Ruby。 `rbenv`是一个用于管理全局或用户级别的Ruby版本的工具,它...
Ruby中的POP3和SMTP类库是用来处理电子邮件收发的核心工具,它们允许开发者通过编程的方式与邮件服务器进行交互。本文将详细介绍这两个类库的功能和使用方法。 首先,POP3(Post Office Protocol version 3)是一种...
对于文件操作,`paperclip` 和 `carrierwave` 是常见的文件上传插件,它们方便地处理图片和其他文件的上传和存储。另外,`active_storage` 是 Rails 5.2 引入的内置文件处理系统,与 AWS S3 或其他云存储服务集成,...
总的来说,Ruby-LazyHighCharts为Ruby开发者提供了一个强大且易于使用的工具,使他们能够便捷地将HighCharts的功能整合到自己的应用中,无论是在动态的Web应用还是静态的站点中,都能实现高效的数据可视化。...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...
Ruby-PaperClip与ActiveRecord的集成为在Rails应用中实现简单的文件附件管理提供了一种方便的方法。PaperClip是由Thoughtbot开发的一个Ruby库,它允许开发者将文件上传功能轻松地添加到ActiveRecord模型中。让我们...
本示例是一个简单的Ruby程序,演示了如何使用七牛云的API来上传图片。 首先,你需要在七牛云官网上注册账号并创建一个存储空间(Bucket),这是存放你上传文件的地方。存储空间具有唯一的名称,可以根据项目需求来...