我是 Ruby on Rails 的初学者,很抱歉这个愚蠢的问题,但我已经搜索了一整天,但仍然坚持它:(
我有一个模型方法将文件 excel 从计算机导入到网络,第一行包含表格列,其他下一行有记录集合保存到数据库。如果它可以将所有记录保存到db,我尝试返回true,否则为false,如下所示:
模型
def self.import(file)
spreadsheet = open_spreadsheet(file) //another method to read file
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
item= find_by_id(row["id"]) || new
item.attributes = row.to_hash.slice(*accessible_attributes)
if item.invalid?{
return false;
break
}
else item.save end
end
end
并在Controller中调用它:
def save
if (Item.import(params[:file]))
redirect_to import_items_path, notice: t("success")
else redirect_to import_items_path, notice: t("fails")
end
end
但是当我导入时它没有返回真/假(总是将“成功”设置为 flash.notice)
我已经将它称为这样的变量
@test = Item.import(params[:file])
并将其发送到 flash.notice 并发现该方法总是返回这样的字符串
“2..xx”(其中 xx 是文件中的行数)
我做了什么奇怪的事情吗???请帮帮我... thks 1st for any kind answer