PostController#index缺少模板

时间:2019-08-09 01:30:38

标签: ruby-on-rails ruby

我正在尝试在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 .....

1 个答案:

答案 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。请注意,尽管要公开所有这些数据。例如,如果对用户执行此操作,则会暴露密码哈希和电子邮件地址。