簡體   English   中英

Rails:回形針不將圖像保存到數據庫

[英]Rails: Paperclip Not Saving Image to DB

我在我的rails應用程序上應該有一個相當簡單的回形針設置。

我的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

您正在使用:image作為file_field但您的回形針字段正在使用product_image ,請按照以下說明進行更改以上傳文件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM