2012-02-14 4 views
1

(Я новичок в PAPERCLIP)Paperclip не хранит файл на моем унаследованной модели

У меня есть эта модель иерархии:

базовая модель:

class QuestDescription < ActiveRecord::Base 
end 

унаследовал модель:

class ImageDescription < QuestDescription 
    has_attached_file :img 
end 

и я использую одностоечное наследование от ActiveRecord

[часть] schema.rb:

create_table "quest_descriptions", :force => true do |t| 
    t.string "type" 
    t.datetime "img_updated_at" 
    t.integer "img_file_size" 
    t.string "img_file_name" 
    t.string "img_content_type" 
    t.datetime "created_at",   :null => false 
    t.datetime "updated_at",   :null => false 
end 

ImageDescription Контроллер:

class ImageDescriptionsController < ApplicationController 

    def new 
    @imgD = ImageDescription.new 
    end 

    def create 
    @imgD=ImageDescription.new(params[:imgD]) 
    if @imgD.save 
     redirect_to :back, :flash => {:notice => "saved"} 
    else 
     redirect_to :back, :flash => {:error => "error"} 
    end 
    end 

    def show 
    @imgD=ImageDescription.find(params[:id]) 
    end 
end  

новый вид (с использованием formtastic):

<%= semantic_form_for @imgD do |form| %> 
    <%= form.input :img%> 
    <%= form.actions %> 
<%end%> 

показать вид:

<%= image_tag @imgD.img.url %> 

, когда я использую новое представление (и выбираю файл для загрузки), POST работает, но файл не сохраняется/не прикрепляется, «img_file_size», «img_file_name», «img_content_type» установлены на nil.

Если я попытаюсь показать его, результатом будет поле «отсутствует».

EDIT:

если я пытаюсь создать ImageDscription из консоли, она работает:

ImageDescription.create(:img => File.new(Rails.root + "public/images/grid.png")) 
    (0.1ms) begin transaction 
    SQL (31.9ms) INSERT INTO "quest_descriptions" ("created_at", "img_content_type", "img_file_name", "img_file_size", "img_updated_at", "type", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?) ["created_at", Wed, 15 Feb 2012 00:07:48 UTC +00:00], ["img_content_type", "image/png"], ["img_file_name", "grid.png"], ["img_file_size", 206], ["img_updated_at", Wed, 15 Feb 2012 00:07:48 UTC +00:00], ["type", "ImageDescription"], ["updated_at", Wed, 15 Feb 2012 00:07:48 UTC +00:00] commit transaction 
    => # 

ответ

0

действительно глупая ошибка:

@imgD=ImageDescription.new(params[:imgD]) 

ничего не значит ... правая линия является

@imgD=ImageDescription.new(params[:image_description]) 
0

Вы должны определить свой пост содержит какой-либо файл внутри с многочастным HTML тегом

<%= semantic_form_for @imgD, :html => { :multipart => true } do |form| %> 
    <%= form.input :img%> 
    <%= form.actions %> 
<%end%> 
+0

спасибо за ответ, но ничего не изменилось: ENCTYPE = «многочастному/форм-данных» уже в HTML формы (я где-то читал, что это срабатывает само с рельсов 3.1) – qwertoyo