2017-07-23 63 views
0

我有什么应该是一个相当简单的安装回形针在我的Rails应用程序。Rails:回形针不保存图像到DB

products_controller.rb是这样的:

class ProductsController < ApplicationController 
    ... 

    def new 
    @product = Product.new 
    end 

    def create 
    @product = Product.new(product_params) 
    @product.save 
    flash[:notice] = "Your product has been created!" 
    redirect_to products_path 
    end 

    def edit 
    @product = Product.find(params[:id]) 
    end 

    def update 
    @product = Product.find(params[:id]) 
    if @product.update_attributes(product_params) 
     redirect_to products_path 
     flash[:notice] = "That product has been updated." 
    else 
     render :action => :edit 
     flash[:alert] = "Something went terribly wrong there..." 
    end 
    end 

    ... 

    private 

    def product_params 
    params.require(:product).permit(:name, :price, :active, :short_description, :weight, :box_length, :box_width, :box_depth, :product_image) 
    end 
end 

products#edit形式(products#new也不管用,但它是相同的形式):

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

    <div class="form-inputs row"> 
    <div class="form-group col-xs-9"> 
     <%= f.label "Product Name" %> 
     <%= f.text_field :name, class: "form-control" %> 
    </div> <!-- form group --> 

    <div class="form-group col-xs-3"> 
     <%= f.label :price %> 
     <%= f.text_field :price, class: "form-control", data: {autonumeric: true} %> 
    </div> <!-- form group --> 

    <div class="form-group col-xs-12"> 
     <%= f.label "Product Description" %> 
     <%= f.text_area :short_description, class: "form-control" %> 
    </div> <!-- form group --> 

    <div class="form-group col-xs-12"> 
     <%= f.file_field :image, as: :file %> 
    </div> <!-- form group --> 

    <div class="form-group text-center col-xs-12"> 
     <p><%= f.check_box :active %> This is an active product.</p> 
    </div> <!-- form group --> 

    <div class="row"> 
     <hr class="col-xs-6 col-xs-push-3" /> 
    </div> 

    <div class="col-xs-12"> 
     <h2 class="text-center">Shipping Information</h2> 
    </div> 

    <div class="form-group col-xs-6"> 
     <%= f.label "Product Length (in Inches)" %> 
     <%= f.text_field :box_length, class: "form-control" %> 
    </div> <!-- form group --> 

    <div class="form-group col-xs-6"> 
     <%= f.label "Product Width (in Inches)" %> 
     <%= f.text_field :box_width, class: "form-control" %> 
    </div> <!-- form group --> 

    <div class="form-group col-xs-6"> 
     <%= f.label "Product Depth (in Inches)" %> 
     <%= f.text_field :box_depth, class: "form-control" %> 
    </div> <!-- form group --> 

    <div class="form-group col-xs-6"> 
     <%= f.label "Product Weight (in Pounds)" %> 
     <%= f.text_field :weight, class: "form-control" %> 
    </div> <!-- form group --> 
    </div> 

    <div class="form-actions text-center"> 
    <%= f.button :submit, class: "btn btn-manly" %> 
    </div> 
<% end %> 

而且我的相关路线:

资源:产品

最后product.rb型号:

class Product < ActiveRecord::Base 
    has_many :order_items 
    has_attached_file :product_image 
    validates_attachment_content_type :product_image, content_type: /\Aimage\/.*\z/ 
    validates_attachment_file_name :product_image, matches: [/png\z/, /jpe?g\z/] 

    default_scope { where(active: true) } 
end 

而且schema.rb的产品表:

create_table "products", force: :cascade do |t| 
    t.string "name" 
    t.decimal "price",      precision: 12, scale: 3 
    t.boolean "active" 
    t.datetime "created_at",           null: false 
    t.datetime "updated_at",           null: false 
    t.string "short_description" 
    t.decimal "weight" 
    t.decimal "box_length" 
    t.decimal "box_width" 
    t.string "box_depth" 
    t.string "product_image_file_name" 
    t.string "product_image_content_type" 
    t.integer "product_image_file_size" 
    t.datetime "product_image_updated_at" 
    end 

我没有得到任何错误,当我提交。我也尝试了Paperclip文档中给出的simple_form_forform_for变体。我有双重检查和ImageMagick安装。任何人都可以看到它为什么没有保存?当我试图上传一张图片后检查控制台时,它只对所有四个回形针字段说nil

+0

什么是你的模型是什么样子?你是否正确设置了回形针?您在模型中的回形针领域是否有适当的迁移? – PressingOnAlways

+0

@PressingOnAlways,我将模式和模型添加到OP。 – Liz

回答

1

您正在使用:imagefile_field,但你的回形针场使用product_image,变化遵循上传文件

<div class="form-group col-xs-12"> 
    <%= f.file_field :product_image, as: :file %> 
</div> <!-- form group -->