原先的产品product模式中存放的是图片的url,必须手动将图片存入指定目录中.现在略作改动,在数据库中新建一个pictures表,其设定如下:

class CreatePictures < ActiveRecord::Migration
  def change
    create_table :pictures do |t|
      t.integer :product_id
      t.string :name
      t.string :comment
      t.string :content_type
      t.binary :data,limit:1.megabyte

      t.timestamps null: false
    end
  end
end

同时配置picture和product的关系,让product has_one picture,让picture belongs_to product.然后修改product以前的image_url的验证模式:

1.删除其必须存在的验证

2.在其Regexp的验证中加入allow_blank:true

在product中加入after_save钩子和pic_tmp虚拟属性:

attr_accessor :pic_tmp
after_save :link_picture
def link_picture
        if pic_tmp
            pic = Picture.new
            pic.uploaded_picture(pic_tmp)
            self.picture = pic
        end
    end

以便在product保存中同时更新picture中与product对应的关系.

最后修改视图中的界面:

<%= form_for(@product,html:{multipart:true}) do |f| %>

  <div class="field">
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_area :description,rows:6 %>
  </div>

  <div class="field">
    <%= f.label :image_url %><br>

    <% if @in_new %>
      <%= f.file_field("pic_tmp") %>
    <% else %>
      <% if @product.picture %>
        <%= f.file_field("pic_tmp") %>
      <% else %>
        <%= f.text_field :image_url %>
      <% end %>
    <% end %>
  </div>

最新文章

  1. 一些值得练习的github项目
  2. linux快速删除海量文件
  3. 破解Java to C# Converter
  4. iOS多线程同步锁
  5. Java笔记--泛型总结与详解
  6. GCD创建一个单例
  7. hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
  8. 【阿里云产品公测】PTS测试 SLB+ECS+RDS组合的DZ论坛负载极限压力,100并发2000页
  9. 你不需要jQuery(四)
  10. 在Linux下安装C/C++开发工具包的最佳方式
  11. WWDC2014之App Extensions学习笔记
  12. BZOJ 1637: [Usaco2007 Mar]Balanced Lineup( sort + 前缀和 )
  13. MVC Controller向View传值(ViewData与ViewBag)
  14. DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能
  15. 让AutoMapper在你的项目里飞一会儿(转)
  16. poj1011 搜索+剪枝
  17. electron-vue 初体验
  18. 盒子模型/div标签/益出处理
  19. 全排列-hdu1027
  20. 安装 Xshell 5/6 时出现.dll以及0xc000007错误的解决

热门文章

  1. Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
  2. open_links_per_instance 和 open_links 参数说明
  3. SQL join 语句 画图果然更容易理解
  4. USB OTG原理+ ID 检测原理
  5. Uva - 1594 - Ducci Sequence
  6. 最近很多人问我:saiku下载不下来
  7. Html标签中thead、tbody、tfoot的作用
  8. ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示(优化篇)
  9. html详解(三)
  10. Chipmunk碰撞形状:cpShape