我有一个file_field选项,我导航到csv文件以上传一系列用户。我目前能够点击上传用户按钮而不添加文件。我想确保我抓住这个零例外,但似乎无法解决如何做到这一点。我应该通过某种方式禁用按钮来更改我的控制器或更改表单
我有以下简单的表格来上传文件:
<%= simple_form_for :tenant, :html => {:multipart => true}, :url => users_path do |f| %>
<%= f.file_field :csv, :label => 'CSV File' %>
<%= f.submit 'Upload Users' %>
<% end %>
我在控制器中有以下视图:
def upload
if request.post?
if params[:tenant][:csv].blank?
flash[:notice] = "Please provide a csv file to upload."
else
file = params[:tenant][:csv].read
CSV.parse(file, headers: true, header_converters: :symbol).each { |row| User.create(row.to_hash) }
end
respond_to do |format|
format.html { redirect_to users_path }
format.json { head :no_content }
end
else
# Return view
end
end
答案 0 :(得分:1)
您可以进行客户端验证或服务器端。我建议服务器端作为起点。根据我在控制器中看到的内容,您似乎没有csv上传的模型。最好将控制器csv代码重构为模型,因为逻辑不属于控制器。一旦有了csv上传的模型,
模型中的validates_presence_of:file
应该可以解决问题。
如果您不熟悉少桌模型,请查看railscast#219。