Rails – 无法在VPS上从csv文件创建记录
我在VPS上部署了我的rails应用程序。 我有一个上传csv文件和基于文件行创建记录的function。 我在ActiveAdmin中使用此function。
单击上传按钮,我通过Ajax调用调用import_csv
方法。
方法如下:
collection_action :import_csv, method: :post do CSV.foreach(params[:file].path, headers: true) do |row| item = Item.where(code: row["code"]).first || Item.new row["status"] = row["status"].downcase if row["status"] row["created_by"] = current_user.get_name row["modified_by"] = current_user.get_name item.attributes = row.to_hash item.save! end render text: { success: "Successfully imported" }.to_json end
因此,在成功时,我将警报视为"Successfully imported"
,如果有任何错误,我会收到"Something went wrong."
的警报"Something went wrong."
这是在Ajax调用的错误块中设置的。
现在的问题是:
我无法通过CSV文件为Item模型创建记录。 我的CSV文件包含近70k行。 我能够创建高达7500的记录。如果我在CSV文件中放入7501行,我会收到警告"Something went wrong"
。
在日志中我也看不到任何错误。 实际上如果有7501行我甚至看不到请求命中import_csv
方法。
这只发生在VPS上。 在开发和生产模式的本地,我能够创建所有70k记录。
有人能帮忙吗? 如何跟踪实际导致错误的内容?
编辑:
在CSV文件中,我可以放入7500行并创建记录。 下次我再次上传一个包含7500行的文件并成功创建记录。
在一次,我无法在文件中放置超过7500的行来创建记录。
最后从浏览器控制台中的错误中得到了一条线索: Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)
Nginx导致了这个问题。 要解决这个问题,我必须设置
client_max_body_size 10M;
在nginx配置文件中:
server { listen 80; server_name IP-Address; location / { root /home/deploy/repos/application-name/public; passenger_enabled on; rails_env production; client_max_body_size 10M; } ...... }
- 使用Rails 3 link_to进行ajax回调的正确方法是什么
- 如果没有在Rails 3中重新加载,数据库值不会出现在同一页面中
- Ajax-submit表单上的“复选框onclick”:为什么会出现此错误?
- Ruby on Rails Ajax调用运行控制器代码,返回成功,但不渲染视图
- 渲染部分视图时ajax中的动态内容
- 如何将params传递给Rails控制器方法然后使用JQuery / AJAX返回值?
- Ruby on rails:如何从登录弹出窗口向用户提供的凭据发送一个AJAX请求到rails控制器
- Rails form_for with file_field and remote => true and format =>:js
- “respond_to do | format |”抛出UnknownFormat错误