simple_form 仅在文件存在时允许上传
simple_form only allow upload when file is present
我正在使用 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 %>
如果您正在寻找更详细的内容,请告诉我,但最简单的实现方式是在输入语句中添加一个必填字段:
<%= 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
我正在使用 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 %>
如果您正在寻找更详细的内容,请告诉我,但最简单的实现方式是在输入语句中添加一个必填字段:
<%= 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