2017-07-27 46 views
0

我有一個用rails製作的json api。 這是網址:https://kazatomprom-backend.herokuapp.com/organizations/suzak/blocks/1/notes如何將數據從rails api導出到xls?

我想將數據導出到xls。但是這些數據必須根據模型屬性進行定製。

id| volume_value|user 
1|  887 |[email protected] 
2|  897 |[email protected] 

我找到了一些解決方案,但它需要的觀點,但我並不需要一個視圖,因爲這是API。那麼,如何僅使用API​​導出數據呢?

+1

「但我並不需要一個視圖,因爲這是API」 - 提示: 「一種觀點」不一定是「一個html/erb視圖」。可以是jbuilder視圖或excel builder視圖或其他任何東西。 「視圖」只是幫助您生成響應的東西。 –

回答

0

像這樣的東西就可以了(它使用CSV數據寫入xls文件):

CSV.open('foo.xls', "wb") do |csv| 
    csv << ['id','volume_value','user'] 
    JSON.parse(json).each do |hash| 
    csv << [hash['id'],hash['volume_value'],hash['user']['email']] 
    end 
end 
+0

我應該把這個代碼放在哪裏。在模型中?下一個問題!它將如何工作?當我打開網址時,瀏覽器會建議我下載一個文件? –

+0

你可以使用'send_file'讓用戶在訪問url時下載xls文件。 – Sajin

+0

我應該把這個代碼。在控制器或模型?對不起,我在鐵軌noob,但無論如何,你可以正確回答我 –

0

acts_as_xlsx你可能想看看

https://github.com/randym/acts_as_xlsx

它可以讓你的瑰寶撥打.to_xlsx方法ActiveRecord這樣的結果

Posts.where(created_at > Time.now-30.days).to_xlsx 

如何使用

寶石添加到您的Gemfile和捆綁安裝 寶石「acts_as_xlsx」

# app/models/post.rb 
    class Post < ActiveRecord::Base 
    acts_as_xlsx 
    end 

# app/controllers/posts_controller.rb 
    class PostsController < ApplicationController 
    # GET posts/xlsx  
    def xlsx 
     p = Post.to_xlsx 
     p.serialize('public/downloads/posts.xlsx') 
     send_file 'public/downloads/posts.xlsx', :type=>"application/xlsx" 
    end 
    end 

# dont forget to add posts/xslx to your routes! 
相關問題