Carrierwave gem を使用して、アタッチメント モジュールをアプリケーションに追加しています。そのために、次のAttachable
ような名前のモデル懸念を作成しました。
module Attachable
extend ActiveSupport::Concern
included do
has_many :attachments, as: :attachable, dependent: :destroy
accepts_nested_attributes_for :attachments
end
end
私はポストモデルに呼び出しています:
class Post < ActiveRecord::Base
include Attachable
end
新しい投稿を保存するのに問題なく動作する場合:
def create
@post = current_user.posts.new( post_params )
if @post.save
redirect_to post_path(@post.slug)
else
@categories = Term.get_category
render :new
end
end
更新時に実際にエントリ(データベース)を複製します:
def update
@post.clean_taxonomies
if @post.update( post_params )
redirect_to post_path(@post.slug)
else
@categories = Term.get_category
render :edit
end
end
編集時に、すべての添付ファイルのタイトル (テーブルのフィールド名:文字列) を再入力しますが、ファイル名を に再入力できないinput field
ため、変更を保存すると、空のファイルで添付ファイルの数が複製されます。
定義されている場合にのみ、それを修正して添付ファイルをアップロード/保存するにはどうすればよいですか?
ありがとう
編集:
これ
が私のビューソースですposts/edit.html.haml
(new.html.hamlと同じ):
= form_for @product, url: product_path(@product.slug), html: { multipart: true } do |f|
= f.fields_for :attachments do |attachment|
.row.attachment
.col-sm-6
= attachment.label :name, 'Filename'
= attachment.text_field :name, class: 'form-control'
.col-sm-5.col-xs-9
= attachment.label :file, 'File'
= attachment.file_field :file, class: 'form-control'
.col-sm-1.col-xs-1
%a.remove-attachment{ href: '#' }
%i.icon-remove-circle.icon-2x