【问题标题】:Rails file_field does not upload anythingRails file_field 不上传任何内容
【发布时间】:2013-05-29 13:42:47
【问题描述】:

我正在使用带有 Carrier Wave 的 Rails 4 和 Ruby 2 以及 jQuery Mobile 1.3,并且用户有一个带有徽标的配置文件。我已经在控制台中测试了后端载波波的东西,它可以工作。

问题出在表单助手中,我做什么都没有关系,但是会显示一个 file_field 并让我选择一个图像,但它并没有出现在参数中。如果我将其更改为不存在的字段,例如。 =f.file_field :field_not_permitted_in_strong_params 它不会倒下并且文件选择器是可见的,如果我将其更改为 =f.text_field :field_not_permitted_in_strong_params,那么 Rails 才会启动并抱怨该字段不存在。

所以我的问题基本上是,我可以上传文件客户端,但它没有通过表单数据发送,或者出现在参数哈希中,并且我所有其他字段都正常工作。

这是一个sn-p的形式:

= form_for(@business_profile, :html => {:multipart => true}, :url => business_profile_path, :validate => true) do |f|

    =image_tag(@business_profile.logo.url, class: 'business-logo')
    %div{:data => {:role => 'fieldcontain'}}
        =f.file_field :logo

    - # Basic Information
    %div{:data => {:role => 'collapsible', :collapsed => 'false'}}
        %h3
            Basic Information                 
        %div{:data => {:role => 'fieldcontain'}}
            = f.label :name, 'Business name:' 
            = f.text_field :name
        %div{:data => {:role => 'fieldcontain'}}
            = f.label :address, 'Address:'
        = f.text_area :address, class: 'address'

【问题讨论】:

  • 作为旁注,我认为您不需要设置多部分。这是来自 FormHelper.file_field 的文档“在 form_for 块中使用此方法会将封闭表单的编码设置为 multipart/form-data。”
  • @phoet 发现问题,不幸的是其他原因造成的问题

标签: ruby-on-rails carrierwave ruby-on-rails-4


【解决方案1】:

好吧,在这件事上花了几个小时后,问题是 jQuery Mobile 默认使用 Ajax 提交表单,如果不使用插件等,则无法使用 Ajax 提交文件。 所以解决方案是像这样禁用 Ajax:

= form_for(@business_profile, :url => business_profile_path, :validate => true, :html => { :'data-ajax' => false }) do |f|

【讨论】:

  • 很高兴能得到帮助:)
  • 你到底是怎么想出来的?我很幸运看到了这篇文章。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 2017-10-31
  • 2021-01-13
  • 2012-09-14
相关资源
最近更新 更多