前提・実現したいこと
Ruby on RailsでrubyXLを使ってxlsxテンプレートに出力したいのですが、check_boxのチェックの入った行だけをExcelに出力したい
発生している問題・エラーメッセージ
空の状態で出力される。
該当のソースコード
controller
1def index 2 @q = List.search(params[:q]) 3 @lists = @q.result(distinct: true).paginate(:page=> params[:page], :per_page=> 50 ) 4 5 respond_to do |format| 6 format.html 7 format.xlsx do 8 9 require 'rubyXL/convenience_methods' 10 11 workbook = RubyXL::Parser.parse('app/assets/template.xlsx') # app/assetsの下に 12 13 worksheet = workbook[0] 14 15 num = 1 16 @labels = List.where(:id => params[:label_id]) 17 @labels.each{|label| 18 worksheet[num][0].change_contents(label.title) 19 worksheet[num][1].change_contents(label.title_no) 20 num += 1 21 } 22 d = Time.now 23 send_data workbook.stream.read, 24 filename: "ラベル_" + d.strftime("%y%m%d%H%M%S")+".xlsx".encode(Encoding::Windows_31J) 25 end 26 end 27 end
view
1 2~省略~ 3 4<%= form_tag({controller: "lists", action: "index"}, {multipart: true}) do %> 5<div> 6<%= link_to 'ラベル出力', lists_path(format: "xlsx"), data: {confirm: "Exel出力しますか?"}, class: 'btn btn-primary' %> 7</div> 8 9~省略~ 10 11<% @lists.each do |list| %> 12 <tr> 13 <td><%= check_box_tag "label_id[]", list.id %></td> 14 15~省略~ 16 17<% end %>
試したこと
実は同じようなコードを書いたことがありまして、その時はlink_toではなく、submitで処理しました。
補足情報(FW/ツールのバージョンなど)
Rails 4.2.6
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/22 04:58
2019/08/22 05:00
2019/08/22 05:49