excel出力とフラグ変更をそれぞれでsumitしたい。
controllerでフラグの有り無しで分岐したおりますが、VIEWの<%= form_tag({format: "xlsx",controller: "ltos", action: "labels",method: "post"}, {multipart: true}) do %>のformat: "xlsx"が無いとExcelに落とせず、有るとフラグ変更時にページが表示されず、ActionController::UnknownFormatになります。
controller
1 def labels 2 respond_to do |format| 3 if params[:flag].blank? 4 @labels = Lto.where(id: params[:label_ids]) 5 format.html 6 format.xlsx do 7 8require 'rubyXL/convenience_methods' 9 10 workbook = RubyXL::Parser.parse('app/assets/template.xlsx') 11 12 workbook.calc_pr.full_calc_on_load = true 13 workbook.calc_pr.calc_completed = true 14 workbook.calc_pr.calc_on_save = true 15 workbook.calc_pr.force_full_calc = true 16 17 worksheet = workbook[0] 18 19 num = 2 20 @labels.each{|lto| 21 worksheet[num][0].change_contents(lto.return_list.order_list.hdd_customer + "/" + lto.return_list.order_list.hdd_division) 22 worksheet[num][1].change_contents(lto.lto_title) 23 worksheet[num][2].change_contents(lto.return_list.order_list.hdd_title_no) 24 worksheet[num][3].change_contents("LTO" + lto.lto_no[-1]) 25 worksheet[num][4].change_contents(lto.lto_no) 26 worksheet[num][5].change_contents(lto.start) 27 worksheet[num][6].change_contents(lto.bytes/1073741824+1) 28 worksheet[num][7].change_contents(lto.complete) 29 num += 1 30 } 31 d = Time.now 32 send_data workbook.stream.read, 33 filename: "LTOラベル_" + d.strftime("%y%m%d%H%M%S")+".xlsx".encode(Encoding::Windows_31J) 34 end 35 else 36 @ltos = Lto.where( :id => params[:label_ids]).update_all( :is_deleted => params[:flag], :updated_at => Time.now ) 37 format.html { redirect_to :back, :notice => "フラグを変更しました。" } 38 format.json { head :no_content } 39 end 40 end 41 end
view
1<%= form_tag({format: "xlsx",controller: "ltos", action: "labels",method: "post"}, {multipart: true}) do %> 2<div class="form-group"> 3<%= submit_tag 'LTOラベル出力', data: {confirm: "Excel出力しますか?"}, class: 'btn btn-primary' %> 4</div> 5<hr> 6<div class="form-group"> 7 <div class="row"> 8 <div class="col-xs-2"align="right"><%= label_tag :flag, :消去一括フラグ変更, params[:flag] %></div> 9 <div class="col-xs-4"><%= select_tag :flag, options_for_select(['消去不可','消去可','消去済']),{:prompt => "選択してください。", :class => "form-control" } %></div> 10 <%= submit_tag nil, data: { confirm: '変更してもよろしいですか?'},:disable_with => "Wait...",:class => 'btn btn-primary'%> 11 </div> 12</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。