我正在使用dropzone-rails将dropzone添加到我的Rails应用中。我正在使用CarrierWave进行图像上传,没有Dropzone就可以正常工作。
当我将图像放到我的dropzone表单上时出现错误。表单位于我的“Canvas”模型的编辑页面上。
表单html
<%= form_for(@canvas, :html => { :class => 'dropzone', :id => 'awesomeDropzone' }) do |f| %>
<%= f.file_field :image %>
<%= f.submit %>
<% end %>
Dropzone JS调用
Dropzone.options.awesomeDropzone = {
paramName: "canvas[image]", // The name that will be used to transfer the file
clickable: false
};
控制台错误:
GET http://localhost:3000/canvases/21/edit 500 (Internal Server Error)
canvases_controller.rb
def edit
@canvas = Canvas.find(params[:id])
end
def update
@canvas = Canvas.find(params[:id])
if @canvas.update_attributes(update_params)
redirect_to edit_canvas_path(@canvas)
else
render :edit
end
end
canvas.rb
mount_uploader :image, ImageUploader
答案 0 :(得分:2)
根据错误,
ActionView::MissingTemplate (Missing template canvases/edit, application/edit with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in:
* "/Users/colmtuite/dev/design_tool/app/views"
):
您edit
没有canvases
视图。确保edit.html.erb
文件夹中有app/views/canvases
个文件。
<强>更新强>
另外,我注意到请求是针对Processing by CanvasesController#edit as JSON
的,
请注意,格式为JSON
而非HTML
。如果您有edit.html.erb
个文件,并且想要渲染该特定视图,请确保不要将格式指定为&#39; JSON&#39;在调用edit
操作时,默认格式将被视为HTML
。
更改update
操作,如下所示:
def update
@canvas = Canvas.find(params[:id])
if @canvas.update_attributes(update_params)
redirect_to edit_canvas_path(@canvas, format: :html) ## Specify format as html
else
render :edit
end
end
答案 1 :(得分:0)
dropzone 使用 JSON 格式,而不是 HTML ,所以 您可以将控制器更改为:
render nothing: true
或
render nothing: true, status: 200
问候!