как использовать Paperclip отдельно с отдельной моделью крепления - PullRequest
0 голосов
/ 27 января 2012

У меня есть сценарий, когда мой пользователь должен сначала загрузить изображение, а затем назначить его другой модели, поэтому я использовал общую модель, чтобы сначала загрузить файл,

модель:

class AttachedImage < ActiveRecord::Base
  belongs_to :attachable, :polymorphic => true

  has_attached_file :image
end

миграция:

class CreateAttachedImages < ActiveRecord::Migration
  def change
    create_table :attached_images do |t|

      t.string      :image_file_name
      t.string      :image_content_type
      t.integer     :image_file_size
      t.datetime    :image_updated_at
      t.references  :attachable,  :polymorphic => true

      t.timestamps
    end
  end
end

И вид и контроллер похожи на следующее:

class AttachedImagesController < ApplicationController
  def create

    @attched_image = AttachedImage.new(params)

    respond_to do |format|  
      if @attched_image.save  
        format.js  
      else
        format.js  
      end  
    end
  end
end

часть просмотра:

<div id="upload-image-dialog">
    <%= form_tag(@attached_image, :method => "POST", :remote => true, :html => { :multipart => true }) do %>
      <%= file_field_tag :image %>
      <%= submit_tag("submit") %>
    <% end %>
    <h1 style="display:none">Successfully Uploaded.</h1>
</div>

это довольно просто, но каждый раз, когда я отправляю эту форму, я получаю исключение из поля utf8, автоматически добавляемого rails. Я не мог понять это, это не должно быть проблемой, верно? Мы пишем @model = Model.new (params) каждый день, надеюсь, кто-нибудь может мне помочь и объяснить, что происходит под капотом, спасибо!

ActiveRecord::UnknownAttributeError (unknown attribute: utf8):
  app/controllers/attached_images_controller.rb:5:in `new'
  app/controllers/attached_images_controller.rb:5:in `create'

1 Ответ

1 голос
/ 30 января 2012

Проблема здесь:

@attched_image = AttachedImage.new(params)

Вы передаете все параметры для сохранения (поэтому вы получаете ошибку utf8, она внутри параметров).Должно быть:

@attched_image = AttachedImage.new(params[:attached_image])
...