【问题标题】:simple_form only allow upload when file is presentsimple_form 仅在文件存在时才允许上传
【发布时间】:2015-12-08 01:36:10
【问题描述】:

我正在使用 simple_form (https://github.com/plataformatec/simple_form) 库使用 Rails 4.2.5 进行文件上传。我想禁止文件上传,除非使用 simple_form 的表单中存在文件但不确切知道如何执行此操作。我的代码如下:

<%= simple_form_for @business, html: { multipart: true } do |f| %>
            <%= f.simple_fields_for :attached_files, AttachedFile.new do |af| %>
            <%= af.input :file, as: :file, label: false %>
          <% end %>
          <%= f.button :submit,
                       'Upload File',
                       class: 'btn btn-mini btn-success hidden',
                       id: 'submit-file-upload' %>
        <% end %>

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 simple-form


    【解决方案1】:

    如果您正在寻找更冗长的内容,请告诉我,但最简单的实现方法是在输入语句中添加一个必填字段:

    <%= simple_form_for @business, html: { multipart: true } do |f| %>
          <%= f.simple_fields_for :attached_files, AttachedFile.new do |af| %>
            <%= af.input :file, as: :file, label: false, required: true %>
          <% end %>
          <%= f.button :submit,
                       'Upload File',
                       class: 'btn btn-mini btn-success hidden',
                       id: 'submit-file-upload' %>
    <% end %>
    

    此外,您还需要确保进行服务器端验证,因为它们确实是唯一的具体验证(浏览器验证总是可以被篡改)

      def create
        @business = Business.new(business_params)
    
        unless params[:file].nil?
          if @business.save!
            redirect_to root_path
          else
            render :new
          end 
      end
    

    最后,确保您的配置文件设置为处理浏览器验证:

    SimpleForm.browser_validations = true
    

    【讨论】:

    • 该死的,我知道只要需要一些简单的东西就可以做到哈哈,谢谢!省去了我写javascript的麻烦
    • 一开始我也很困惑。以为我必须给你写一个完整的 JS 块;)干杯!
    • hm 实际上,当我将其插入我的应用程序时,如果您由于某种原因没有任何东西,它仍然会提交......
    • 即使在重新启动服务器之后?
    • 不确定重启我的服务器会做什么,渲染的输出只是所需的真实标签。试过了,同样的事情发生了,它允许在没有文件的情况下提交
    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 2013-01-17
    • 2019-01-26
    • 2019-10-22
    • 1970-01-01
    • 2014-12-31
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多