0

私はすべてがうまくいくと思います..しかしそれは機能しません..
私はgithubにファイル全体をアップロードしました
https://github.com/iom00/action2.git
最近gemを更新しました。しかし、レール3.2でも同じ問題があります
。Plzが私を助けてくれます〜!


ポートフォリオモデル

class Portf
  include Mongoid::Document
  field :title, type: String
  field :decs, type: String  

  attr_accessible :images
  embeds_many :images
  accepts_nested_attributes_for :images, :allow_destroy => true

end


画像モデル

class Image
  include Mongoid::Document
  include Mongoid::Paperclip

  field :portf_id, type: Integer
  embedded_in :portf , :inverse_of => :images
  has_mongoid_attached_file :file
end

ポートフォリオコントローラー

  # GET /portfs/new
  # GET /portfs/new.json
  def new
    @portf = Portf.new
    5.times { @portf.images.build }

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @portf }
    end
  end

  # GET /portfs/1/edit
  def edit
    @portf = Portf.find(params[:id])
    5.times { @portf.images.build }
  end

  <%= form_for @portf, :html => { :multipart => true } do |f| %>
    <%= f.fields_for :images do |image| %>
             <% if image.object.new_record? %>
                   <%= image.file_field :file %>                                  
             <% end %>
   <% end %>
4

1 に答える 1

1

まず第一に、あなたはそうしなければならないimages_attributesのではなく、大量の割り当てに利用できるようにする必要がありますimages

  attr_accessible :images_attributes

そこに追加することもでき:titleます。

さらに、埋め込みドキュメントにペーパークリップの添付ファイルがある場合は、カスケードコールバックを追加する必要があります。https://github.com/meskyanichi/mongoid-paperclipから:

埋め込みドキュメントに関する注意:親ドキュメントを保存または更新する場合は、embeds_XXXステートメントにcascade_callbacks:trueを追加する必要があります。そうしないと、データは更新されますが、ファイルをコピー/更新するためのペーパークリップ関数は実行されません。

だからあなたはする必要があります:

  embeds_many :images, :cascade_callbacks => true

カスケードコールバックの詳細については、http://mongoid.org/en/mongoid/docs/relations.html#commonをご覧ください。

また、現在mongoid-paperclipにブロッカーの問題がありますhttps://github.com/meskyanichi/mongoid-paperclip/issues/32プルリクエストはありますが、まだマージされていません。そのため、Mongoid 3で使用すると、このエラーに遭遇する可能性があります。

于 2012-08-25T19:17:01.180 に答える