Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Dropzone.js ActionController::ParameterMissing配置文件图像上载_Ruby On Rails 4_Dropzone.js - Fatal编程技术网

Ruby on rails 4 Dropzone.js ActionController::ParameterMissing配置文件图像上载

Ruby on rails 4 Dropzone.js ActionController::ParameterMissing配置文件图像上载,ruby-on-rails-4,dropzone.js,Ruby On Rails 4,Dropzone.js,我正在尝试将Dropzone.js实现为用户scaffold的拖放配置文件照片上传程序 在我的RubyonRails中,我创建了userscaffold,它有一个配置文件照片(实现由回形针处理) 我想创造一种体验 用户编辑同一页面上的所有详细信息(包括个人资料照片) 在编辑/用户/x页面的第一次加载时,加载当前图像 当用户将图像放置在表单部分上时,图像将作为预览呈现 如果单击“取消”,将恢复以前的图像 我提出的方法是创建一个tempUploads表,用于存储拖放到Dropzone中的所有图像/文

我正在尝试将Dropzone.js实现为用户scaffold的拖放配置文件照片上传程序

在我的RubyonRails中,我创建了
user
scaffold,它有一个配置文件照片(实现由回形针处理)

我想创造一种体验

  • 用户编辑同一页面上的所有详细信息(包括个人资料照片)
  • 在编辑/用户/x页面的第一次加载时,加载当前图像
  • 当用户将图像放置在表单部分上时,图像将作为预览呈现
  • 如果单击“取消”,将恢复以前的图像
  • 我提出的方法是创建一个temp
    Uploads
    表,用于存储拖放到Dropzone中的所有图像/文件。成功上传后,它会将图像的id返回到表单中,然后一旦用户单击“保存”,图像的id将与表单一起发布,并在用户和图像之间创建链接

    我对stack overflow社区有两个问题:

  • 我是否过度复杂化了这种方法
  • 我得到以下错误:
    ActionController::ParameterMissing(param缺失或值为空:Upload):
    我做错了什么
  • 到目前为止,我的代码概述如下

    感谢您的帮助

    <%= form_with(model: user, local: true) do |form| %>
    <div class="form-group">
        <% if user.errors.any? %>
          <div id="error_explanation" class="row">
            <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
            <ul>
            <% user.errors.full_messages.each do |message| %>
              <li><%= message %></li>
            <% end %>
            </ul>
          </div>
        <% end %>
      <div class="field">
        <%= form.label :name %>
        <%= form.text_field :name, id: :user_name, :class=> "form-control" %>
      </div>
      <div id="profile-photo" class="field dropzone">
        <%= form.file_field :profile, :class=> "fallback"%>
      </div>
    
      <div class="field">
        <%= form.label :role %>
        <%= form.text_field :role, id: :user_role, :class=> "form-control" %>
      </div>
    
      <div class="actions">
        <%= form.submit %>
      </div>
    </div>
    <% end %>
    
    以下控制器#操作

    My request.request_参数如下所示:

    Parameters: {"file"=>#<ActionDispatch::Http::UploadedFile:0x007f8fe120b278 @tempfile=#<Tempfile:/var/folders/rp/79zzx36504z9kp7srj55pxk80000gn/T/RackMultipart20170804-3814-13pid57.jpg>, @original_filename="tokyo.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"tokyo.jpg\"\r\nContent-Type: image/jpeg\r\n">}
    
    参数:{“文件”=>
    
    我怀疑这与dropzone.js文件使用的参数名有关。如果打开dropzone.js文件,您将看到paramName值默认为“file”

    尝试将此行更新为以下内容:

    paramName:'user[profile]'
    (或者,不管您如何设置用户模型的文件字段属性,我只是从您的帖子中推断出这一点,这里可能有误)


    例如,在我的例子中,my Images表有一个名为“file”的列,该列是上载图像的位置。一旦我将paramName更新为“image[file]”,一切都按预期开始工作,强params被POST请求适当填充。

    我怀疑这与dropzone.js文件用作paramName的内容有关。如果打开dropzone.js文件,您将看到paramName值默认为“file”

    尝试将此行更新为以下内容:

    paramName:'user[profile]'
    (或者,不管您如何设置用户模型的文件字段属性,我只是从您的帖子中推断出这一点,这里可能有误)


    例如,在我的例子中,my Images表有一个名为“file”的列,该列是上载图像的位置。一旦我将paramName更新为“image[file]”,一切都按预期开始工作,强参数被POST请求适当填充。

    Hi Anthony!你能解决这个问题吗?我自己也遇到了类似的问题……嗨,安东尼!你能解决这个问题吗?我自己也遇到了类似的问题。。。
    # POST /uploads
        # POST /uploads.json
        def upload
          puts request.request_parameters
          @upload = Upload.new(upload_params)
    
            if @upload.save
               puts @upload.id
          #     format.html { redirect_to @upload, notice: @upload.id }
          #     format.json { render :show, status: :created, location: @upload }
              else
          #     format.html { render :new }
          #     format.json { render json: @upload.errors, status: :unprocessable_entity }
            end
        end
    
        def upload_params
          params.require(:Upload).permit(:photo)
        end
    
    Parameters: {"file"=>#<ActionDispatch::Http::UploadedFile:0x007f8fe120b278 @tempfile=#<Tempfile:/var/folders/rp/79zzx36504z9kp7srj55pxk80000gn/T/RackMultipart20170804-3814-13pid57.jpg>, @original_filename="tokyo.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"tokyo.jpg\"\r\nContent-Type: image/jpeg\r\n">}