1

商品の作成ページと写真の追加ページがあります。ユーザーが製品を作成すると、写真を追加できるページにリダイレクトされます。選択した写真のプレビューを表示するJquery ファイルアップロードを使用しており、[開始] をクリックするとそれらがサーバーに追加されます。ただし、このエラーが発生します。

jQuery ファイルのアップロード エラー

DWadeCrop.jpg 97.74 KB エラー SyntaxError: JSON.parse: 予期しない文字

コンソール メッセージ

Started POST "/photos" for 127.0.0.1 at 2013-07-10 21:03:03 -0400
Processing by PhotosController#create as JSON
Parameters: {"utf8"=>"✓", "authenticity_token"=>"tc6sbe9n/PPKlZlUpQYWqxR3C6QJEMnQJSKr8+prczw=", "product_id"=>"129", "photo"=>{"upload"=>#<ActionDispatch::Http::UploadedFile:0xa5f0780 @original_filename="DWadeCrop.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"photo[upload]\"; filename=\"DWadeCrop.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20130710-3967-h6rcoo>>}}
Product Load (0.1ms)  SELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT 1  [["id", "129"]]
Redirected to http://localhost:3000/
Completed 302 Found in 5ms (ActiveRecord: 0.1ms)


Started GET "/" for 127.0.0.1 at 2013-07-10 21:03:03 -0400
Processing by StaticPagesController#home as JSON
  Rendered static_pages/home.html.haml within layouts/application (1.4ms)
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."auth_token" = 'eQOQkRRSnzfA51iiDQ-90w' LIMIT 1
Completed 200 OK in 85ms (Views: 84.6ms | ActiveRecord: 0.3ms)

写真ビューのアップロード場所 localhost:3000/products/123/pics

Upload file
  = form_for @photo, :html => { :multipart => true, :id => "fileupload"  } do |f|
    = f.file_field :upload
    = hidden_field_tag 'product_id', @photo.product_id

写真の方法

  def pics
    @product = Product.find(params[:product_id])
    @photo = Photo.new
    @photo.product_id = @product.id
  end

写真の create メソッド

def create
  @product = Product.find(params[:product_id])
  @photo = Photo.new

  if @photo.valid?
    @photo.product_id = @product.id
    @photo.save!
    respond_to do |format|
      format.html { redirect_to product_path(@product) }
      format.json { render json: @photo }
    end
  else
    redirect_to root_url, :notice => "Somehting went wrong!"
  end
 end

写真モデル

class Photo < ActiveRecord::Base
  attr_accessible :image
  has_attached_file :image

  include Rails.application.routes.url_helpers

  belongs_to :product
    validates_attachment :image, presence: true,
                            content_type: { content_type: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'] },
                            size: { less_than: 5.megabytes }
    has_attached_file :image, styles: { medium: "320x240>", :thumb => "100x100>"}

      def to_jq_image
    {
      "name" => read_attribute(:upload_file_name),
      "size" => read_attribute(:upload_file_size),
      "url" => image.url(:original),
      "delete_type" => "DELETE" 
    }
  end

end
4

1 に答える 1

1

問題は、写真モデルにあることです

  "name" => read_attribute(:upload_file_name),
  "size" => read_attribute(:upload_file_size),

モデルが @photo の場合、これを次のように変更します

  "name" => read_attribute(:photo_file_name),
  "size" => read_attribute(:photo_file_size),

あなたの form_for にもあります

Upload file
  = form_for @photo, :html => { :multipart => true, :id => "fileupload"  } do |f|
    = f.file_field :upload

:upload again あなたのモデルは @photo で、それも置き換えてください。

于 2013-07-11T08:12:12.907 に答える