Ruby on rails 如何允许文件字段中的参数上载Rails
在我使用rails FormTagHelperRuby on rails 如何允许文件字段中的参数上载Rails,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我使用rails FormTagHelper文件\字段\表单的应用程序中,我有一个csv导入功能 <h1>Offer import</h1> <div class="column left"> <div class="widget"> <h2>Select file</h2> <div class="bg-white pa3&quo
文件\字段\表单的应用程序中,我有一个csv导入功能
<h1>Offer import</h1>
<div class="column left">
<div class="widget">
<h2>Select file</h2>
<div class="bg-white pa3">
<%= form_tag({ action: :do_import }, multipart: true) do %>
<%= file_field_tag :csv_file, accept: 'text/csv' %>
<%= submit_tag 'Process' %>
<% end %>
</div>
</div>
</div>
当我尝试上载csv时,我在控制台Unpermitted parameters::csv\u file
中看到此错误。有没有办法允许这个参数?我知道通常您允许模型上存在的参数,但此参数不允许。不允许的参数
仅此而已。因此,您应该在您的控制器(包括它的超级)上检查是否有任何在您的操作之前
触发参数。允许
,如果它存在,您可以只为方法do\u import
跳过该操作,或者只将:csv\u文件
添加到允许的参数列表中(如果它可能不会导致创建模型时出错)。在调用它之前是否尝试过params.permit(:csv_文件)
?@brcebn是的,我得到了一个NoMethodError未定义的方法error.wird.params
的类别是什么?你在控制器中,对吗?
def do_import
file = params[:csv_file]
if file.present? && file.content_type == "text/csv"
importer = OfferImportWorker.new
filename = importer.offer_csv(params[:csv_file])
OfferImportWorker.perform_async(filename, current_user.email, current_user.id, file.original_filename)
flash.now[:alert] = "Importing offers, an email will be sent when finished."
else
flash.now[:alert] = "Please select a CSV file"
end
render "import"
end