【发布时间】:2015-10-14 13:42:30
【问题描述】:
如果您要自定义放置区,我不明白 URL 和 paramName 应该是什么?
Dropzone.autoDiscover = false
$('#new_picture').dropzone
url: '/projects'
maxFilesize: 1
paramName: 'project_images[photos]'
addRemoveLinks: true
我很确定我的 paramName 和 url 是错误的。
我有这样嵌套的回形针:
<%= simple_form_for @project, html: { multipart: true } do |f| %>
<div class='dropzone' id="new_picture">
<div class="fallback">
<%= file_field_tag "photos[]", multiple: true %>
</div>
</div>
<% end %>
我有一个 project_image.rb
class ProjectImage < ActiveRecord::Base
belongs_to :project
has_attached_file :photo,
:styles => {
:large => "800x800>",
:thumb => "150x150#" },
:default_url => "/images/:style/missing.png"
validates_attachment_content_type :photo, content_type: /\Aimage\/.*\Z/
attachment :file
end
我的参数在 projects_controller.rb 中看起来像这样
def project_params
params.require(:project).permit(
:user_id,
project_images_attributes: [:id, :project_id, :photo, :_destroy])
end
只是为了展示我创建的样子
def create
@project = Project.new(project_params)
respond_to do |format|
if @project.save
if params[:photos]
params[:photos].each { |image|
@project.project_images.create(photo: image)
}
end
end
end
end
【问题讨论】:
-
你的
project和project_image都有photo? -
@Pavan 我只是把它放在那里,因为我正在测试它。它不应该在那里。我会编辑它。
:photo来自我做rails g paperclip project_image photo的时候 -
好的。在您的表单中,您没有用
form object包装file_field。我明白你为什么那样给。所以params的photos将进入params[:photos],所以我猜paramName: 'photos'会起作用。如果这不起作用,请尝试paramName: 'photos[]'。 -
如果
#new_picture与id相关,那么你也给了$('#new_picture').dropzone,那么你的form应该有一个id作为new_picture。
标签: ruby-on-rails ruby ruby-on-rails-4 paperclip dropzone.js