禁用提交按钮file_field

时间:2012-06-07 15:07:24

标签: ruby-on-rails-3 controller simple-form filefield

我有一个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

1 个答案:

答案 0 :(得分:1)

您可以进行客户端验证或服务器端。我建议服务器端作为起点。根据我在控制器中看到的内容,您似乎没有csv上传的模型。最好将控制器csv代码重构为模型,因为逻辑不属于控制器。一旦有了csv上传的模型,

  

validates_presence_of:file

模型中的

应该可以解决问题。

如果您不熟悉少桌模型,请查看railscast#219。