[英]How to export table data as CSV file in Ruby 1.9.2 + Rails3?
我是一名学生,目前正在参加信息技术计划,并且获得了一个项目,该项目需要我和我的团队使用Rails 3 + Ruby 1.9.2创建动态表单构建器。 该动态表单构建器的关键功能是让用户导出其表单结果。 使用Ruby 1.9+ API中定义的CSV类实现CSV功能并没有取得太大的成功。 我在form_results控制器中定义了一个“导出”功能,当前仅尝试写入CSV文件。 我的导出函数如下所示:
def export
CSV.open("/public/results/results.csv", "wb") do |csv|
csv << ["sample", "data"]
end
end
在视图中,我使用以下方法链接到该函数:
<%= link_to 'Download CSV', form_form_results_path(@form), :method => :export %>
我认为,如果我可以使CSV类的实现正常工作,那么我将可以完成其余逻辑,而不会遇到任何严重问题。 任何指导,意见或帮助将不胜感激。
谢谢,
马兹M.
您对:method
参数的使用不正确。 这应该用于指定http动词。 此处的文档: http : //api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
我建议在他们查看动态表单的操作中使用respond_to
块,并使用format.csv
。 这使您可以使用相同的操作,但只需调用操作URL,并将URL附加.csv即可以不同的格式呈现结果。
respond_to do |format|
format.html
format.csv { render :text => @dynamic_form.to_csv} #this will return txt in browser
#format.csv { render :csv => @dynamic_form.to_csv} #with mime type (should prompt browser download)
end
然后,您可以在表单模型中创建to_csv def,该def将呈现csv并将其作为字符串返回。 您实际上不应该在控制器中放入任何类似的逻辑。 控制器用于创建实例变量(应在模型中完成创建逻辑)并转发到适当的视图。 该模型应包含您的大部分逻辑。 谷歌“瘦控制器,胖模型”的更多信息。
def to_csv
csv = some_logic_here_to_create_csv_string
csv
end
您的link_to调用可能看起来像这样(只是将其写在我的头上。我不记得这是否是正确的语法):
<%= link_to 'Download CSV', form_form_results_path(@form, :format=>:csv) %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.