ruby-on-rails 无法使用Rails 4中的Transloadit上传照片

aurhwmvo  于 2022-12-01  发布在  Ruby
关注(0)|答案(2)|浏览(165)

我按照Transloadit Rails GitHub page上的教程进行了操作,但在提交表单时没有收到警告:Could not find input[name=params] in your form.在我点击“确定”后,Transloadit迅速抛出INVALID_FORM_DATA: bad form data, cannot parse,数据从未击中我的服务器。
我的应用程序正在使用Rails 4.1.4jquery-rails 2.1.4
这是我的表格:

= form_for @profile, url: community_add_photo_path(@profile), html: {id: 'photo_form'} do |f|
  = render 'shared/error_messages', object: f.object
  = transloadit :profile_photo
  = hidden_field_tag 'transloadit_template', 'profile_photo'

  %table.list
    %tr
      %td.faded.label Photo Filename
      %td= f.file_field :photo, required: true
    %tr
      %td
      %td= f.submit 'Upload'

= transloadit_jquerify :photo_form, wait: true

还有我的transloadit.yml文件:

development:
  jquery_sdk_version: 'latest'
  auth:
    key:      'key'
    secret:   'secret'
    duration: 1800 # 30 minute validity period for signed upload forms

  templates:
    profile_photo:
      steps:
        resize:
          height: 256
          resize_strategy: 'fillcrop'
          robot: '/image/resize'
          width: 256
        store:
          bucket: 'bucket-name'
          key: 'key'
          path: 'temp/${assembly.id}/${file.name}'
          robot: '/s3/store'
          secret: 'secret'

有什么建议吗?谢谢!

kjthegm6

kjthegm61#

我假设你在控制器里有params解码器,这是我有的,它能工作,但是现在要用jquery,因为我不能控制正在发生的事情。

= bootstrap_form_for apr, :remote=> true,   html: { :id => "showapr#{apr.id}" , "data-type" => :json,    class: 'form-horizontal' } do |f|
            = hidden_field_tag :eventid, apr.event.id
            = transloadit :video_encode
            .fileupload.fileupload-new.pull-left{"data-provides" => "fileupload", style: "padding-right: 5px;"}  
                .fileupload-preview.thumbnail{:style => "width: 140px; height: 140px;"}
                    - if apr.upload.present?
                        - if apr.upload["thumbs"].present?
                            %img{ :src => apr.upload["thumbs"][0], :style => "width: 140px;height: 140px;"}
                    -else
                        %img{"data-src" => "holder.js/140x140/text:Lorem ipsum/social", :src => "", :style => "width: 140px;height: 140px;"}/
                - if apr.event.app.check_user_failed == false &&  (apr.event.start_time.day == Time.zone.now.day)
                    %div
                        %span.btn.btn-default.btn-file
                            %span.fileupload-new Select image
                            =f.file_field "upload#{apr.id}" , accept: 'video/flv,video/avi,video/mov,video/mp4,video/mpg,video/wmv,video/3gp,video/asf,video/rm,video/swf',  :data => {:max_file_size => 30.megabytes}
                    = transloadit_jquerify "showapr#{apr.id}", :wait => true, :modal=>true,  :triggerUploadOnFileSelection=> true
t9aqgxwy

t9aqgxwy2#

问题是您实际上并没有将正确的表单数据发布到API,以便正确解析。
https://transloadit.com/docs/api/response-codes/
提供:NO_PARAMS_FIELD未提供参数字段。
这样做非常有意义,因为您没有将params字段也传递给API,而在使用transloadit的jquery方法时会用到该API

params: {
 "startdate":"2014-12-02", 
 "endate":"2014-12-03",
 "auth":{ 
   "expires": "2014/12/27 16:53:14+00:00", 
   "key": "yourKeyValue"
  }
}
&signature=yourUniqueSignature

因此,创建参数以发送到API以使transloadit工作的方式存在问题。

相关问题