【发布时间】:2014-08-07 15:55:00
【问题描述】:
附件不会保存。我在这里缺少什么? 在我的应用程序中,我有一个项目,每个项目用户都可以上传许多资产。上传是通过载波完成的。
这里是模型
class Project < ActiveRecord::Base
has_many :assets,:as => :assetable,dependent: :destroy
accepts_nested_attributes_for :assets, :allow_destroy => true
end
class Asset < ActiveRecord::Base
belongs_to :project
belongs_to :user
belongs_to :assetable, :polymorphic => true
mount_uploader :attachment, AttachmentUploader #carrierwave
validates :attachment, presence: true
validates :project_id, presence: true
end
这些是我的 project_controller 中的操作
def new
@project = Project.new
@asset = @project.assets.build
end
def create
@project = Project.new(project_params)
@project.assets.build
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.json { render :show, status: :created, location: @project }
else
format.html { render :new }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
def project_params
params.require(:project).permit(:user_id, :summary, :start_date,assets_attributes: [:id, :project_id, :attachment,:user_id] )
end
这就是表单的样子
<%= form_for @project,:html => {:multipart => true } do |f| %>
<% if @project.errors.any? %>
<div id="error_explanation">
</div>
<% end %>
<%= f.fields_for :assets do |p| %>
<div class="field">
<%= p.label :attachment %><br>
<%= p.file_field :attachment,name: "assets[attachment][]" %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
【问题讨论】:
-
您的表单是否包含以下内容:enctype="multipart/form-data" ?否则二进制数据将不会与 post vars 一起发送。
-
感谢您的 cmets,我已经更新了问题。所以表格也在那里
标签: ruby-on-rails ruby-on-rails-4 rails-activerecord nested-attributes polymorphic-associations