我正在尝试在Rails上构建Instagram,并遇到这个超长错误。我很迷失在哪里寻找问题。抱怨我没有实际使用的索引操作模板。
我的猜测是因为我使用Dropzone重新加载页面。这是代码:
Dropzone.autoDiscover = false;
$(document).ready(function(){
$(".upload-images").dropzone({
addRemoveLinks: true,
maxFilesize: 1,
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
maxFiles: 100,
paramName: "images",
previewsContainer: ".dropzone-previews",
clickable: ".upload-photos-icon",
thumbnailWidth: 100,
thumbnailHeight: 100,
init: function(){
var myDropzone = this;
this.element.querySelector("input[type=submit]").addEventListener("click", function(e){
e.preventDefault();
e.stopPropagation();
myDropzone.processQueue();
});
this.on("successmutiple", function(files, response){
window.location.reload();
})
this.on("errormultiple", function(files, response){
toastr.error(response);
});
}
})
});
由于这个长错误,我无法发布图像。有人可以解释一下它的意思吗?以及如何解决该问题?
PostsController#index中的ActionController :: UnknownFormat PostsController#index缺少此请求格式和变体的模板。 request.formats:[“ application / json”] request.variant .....
答案 0 :(得分:3)
当Rails响应请求时,按照惯例,它将触发控制器动作,然后在路径app/views/PLURAL_RESOURCE_NAME/ACTION.REQUEST_FORMAT.erb
处呈现一个模板。例如,当请求html作为帖子索引路径时,它是app/views/posts/index.html.erb
。您还需要在app/views/posts/index.json.erb
处创建一个文件,该文件将在Dropzone到达端点时呈现。
如果您需要根据请求的格式执行不同的工作,则还可以在控制器中执行不同的逻辑:
class PostsController < ApplicationController
def index
@posts = Post.all # this is available to all formats
respond_to do |format|
format.html # just do the default stuff, ie. render index template
format.json { # do other stuff just for the json version
@foo = "bar"
do_stuff()
}
end
end
end
如果只想转储数据而不创建模板,则也可以执行render json: @posts
。请注意,尽管要公开所有这些数据。例如,如果对用户执行此操作,则会暴露密码哈希和电子邮件地址。