【发布时间】:2016-03-09 21:47:16
【问题描述】:
我正在尝试在 Rails 4 中将一些数据导出到 CSV。我有两个模型:Excursions 和 Inscriptions。一次远足有许多铭文,一种铭文属于一次远足。
我的嵌套路由是这样定义的:
resources :excursions do
resources :inscriptions
get 'exportcsv' => 'excursions#download'
end
所以我试图实现的行为是:当我访问路线 /excursions/1/exportcsv 时,CSV 将被下载到我的计算机上,其中包含所有带有 excursion_id = 的题词1 个 CSV 格式。
在我的游览模型中,我定义了 self.to_csv:
def self.to_csv(options = {})
CSV.generate(options) do |csv|
csv << column_names
self.inscriptions.each do |inscription|
csv << inscription.attributes.values_at(*column_names)
end
end
end
还有我的游览控制器的方法下载:
def download
@excursion = Excursion.find(params[:id])
respond_to do |format|
format.html
format.csv { send_data @excursion.to_csv }
end
end
编辑:当我去这样的路线时:/excursions/:id/exportcsv 服务器抛出 ActiveRecord::RecordNotFound 错误。这个错误很容易解决,但如果我解决了 RecordNotFound ,我会在这一行得到一个 ActionController::UnknownFormat :
def download
@excursion = Excursion.find(params[:id])
respond_to do |format| ########THIS LINE
format.html
format.csv { send_data @excursion.to_csv }
end
end
我做错了什么?也许所有这些方法都不正确......
【问题讨论】:
-
有什么问题? CSV 的输出是什么?您是否对 csv 标题列或其他问题有疑问?
-
@Dharam 我已经更新了这个问题。对不起!
标签: ruby-on-rails csv nested-resources