Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证csv文件中与mysql数据库字段匹配的行和列_Ruby On Rails - Fatal编程技术网

Ruby on rails 验证csv文件中与mysql数据库字段匹配的行和列

Ruby on rails 验证csv文件中与mysql数据库字段匹配的行和列,ruby-on-rails,Ruby On Rails,我完成了将csv文件导入MySql数据库的任务。但现在我的要求是: 1.csv文件的行和列应与MySql数据库的行和列相匹配,这样,如果缺少任何行或列,则应引发错误:“缺少@row1或column 2”。。 2.在我的代码中,表格标题,即名称、位置、城市等;每次导入时,标题经常重复 我的代码如下: def load_csv end def import_csv csv=params[:file].read n=0 parsed_file = CSV.parse(csv) parsed_fi

我完成了将csv文件导入MySql数据库的任务。但现在我的要求是: 1.csv文件的行和列应与MySql数据库的行和列相匹配,这样,如果缺少任何行或列,则应引发错误:“缺少@row1或column 2”。。 2.在我的代码中,表格标题,即名称、位置、城市等;每次导入时,标题经常重复

我的代码如下:

def load_csv

end

 def import_csv
csv=params[:file].read
n=0
parsed_file = CSV.parse(csv)
parsed_file.each  do |row|
i=User.new
i.name = row[0]
i.location = row[1]
i.city = row[2]
if i.valid?
i.save
n=n+1
GC.start if n%50==0
flash[:notice] = "CSV Imported Successfully, with  #{n} records"                                
end
end
在以下观点中:

<%= form_for(:user, :url => import_csv_user_path,  :html => {:multipart => true}) do |f| %>
 <table>
<tr>
<td>
<label for="dump_file">
Select a CSV File :
</label>
</td>
<td ><%= file_field_tag :file -%></td>
</tr>
<tr>
<td colspan='2'><%= submit_tag 'Submit' -%></td>
</tr>
</table>
<% end -%>
import_csv_user_path,:html=>{:multipart=>true})do | f |%>
选择一个CSV文件:

请帮帮我吧……

我和你现在的工作一样。然而,我不认为这是一个很好的/直接的/简洁的/优雅的解决方案,因为这(验证CSV文件)不是一个很好的要求,对我来说,它与数据库/模型的“版本控制”是一样的。它可能会把你所有的代码弄乱,尤其是对于那些不是专家的人来说

好的,投诉完成了。让我分享我的解决方案:

  • 通过javascript。我没有以这种方式实现它,但是相比我所做的,我更喜欢这种方式。步骤如下:

  • 读取本地csv文件(参考jasmine的负载测试夹具方法)
  • 验证csv和数据库表之间的列
  • 显示结果。如果未通过,则向用户发出警告消息
  • 通过远程的ruby代码:我这样做了,发现它不是很好(可能我使用了很多js函数…脏,不优雅,难以测试,响应速度慢,ajax…等等),如果你这样做,请使用普通html页面,而不是“对话框”或“模式窗口”

  • 将文件更新到远程服务器
  • 验证远程服务器中的csv文件
  • 如果验证失败,则向用户发出警告消息

  • 这是您的代码,空加载\u csv方法?好的。你的意思是,我所做的编码不符合我的要求。。我是RubyonRails新手。你能通过提供任何有趣的链接来引导我找到正确的路径吗?或者我如何修改我的代码??。。