2016-05-30 64 views
0

我是新來的Ruby,我需要添加一個新的按鈕,導出不同的屬性到CSV。舊的按鈕導出集合的所有屬性。 我此行的控制器:兩個導出按鈕在CSV中的導軌

respond_to :csv, only: :index 

我有這樣的HTML視圖:

= link_to collection_path(format: :csv), tabindex: '-1' 
      = fa_icon 'file-code-o', text: 'CSV', class: 'fa-fw' 

,我有一個名爲index.csv.slim,它的內容:

= collection.to_csv 

我有定義了to_csv方法,並自動響應導出! http://localhost/records.csv

如何添加一個新的按鈕響應不同的方法,我應該添加另一個文件,如index.csv.slim?我如何將它們連接在一起? 或者至少如果我可以將參數傳遞給to_csv? 和:

= collection.to_csv(all) 

和:

def to_csv (all = true) 

注:我們使用inherited resourcesDraper寶石。 所以我沒有在控制器中的操作。 和路徑文件中沒有任何內容。

注:使用本way

+0

新的CSV文件是在控制器中以不同的動作還是相同的動作? – coderhs

+0

我沒有控制器的動作,我們使用'繼承資源'。 – user181452

+0

新的導出應該對不同的屬性作出響應,所以我需要一個新的'to_csv'方法,但我不明白這是如何自動映射的,所以我可以輕鬆地添加一個新的。 – user181452

回答

0

解決方案是限定再次index操作:

def index 
    respond_to do |format| 
     format.csv do 
     @all = params[:all].present? 
     end 
     format.html { super } 
    end 
    end 

並在視圖:

= link_to collection_path(format: :csv, all: true), tabindex: '-1' 

= link_to collection_path(format: :csv, all: false), tabindex: '-1' 

和內部index.csv.slim

= collection.to_csv(@all)