お世話になっております。
検索画面は、今までransackを使っていましたが、
ちょっと複雑なSQL文になるため、今回はransackを断念。
find_by_sql()を使う方法を採用しました。
この場合、画面から日付、所属部署、社員名などの検索条件を渡したいのですが、
具体的なview側の記述がよく分かりません。
ransackを利用していた検索画面のviewコードをそのまま持ってきてもエラーになりました。
以下がそうです。
まず「search_form_for」はransackのメソッドなので「form_tag」に置換えました。
すると添付画像のようなエラーになりました。
ransack gemを使わず、検索条件を渡す方法を教えて下さい。
宜しくお願い致します。
ruby
1 <div class="contents-box"> 2 <!-- 検索条件 --> 3 <%= search_form_for(@q, url: today_plans_path, html: { method: :get, class: 'form-horizontal', role: 'form' }) do |f| %> 4 <div class="row" > 5 <div class="col-sm-12"> 6 <div class="row row_input"> 7 <label class="col-sm-1 control-label" for="">日付</label> 8 <div class="col-sm-8"> 9 <%= f.text_field :plan_date_gteq, class: 'form-control date-picker', value: params[:q] ? params[:q][:plan_date_gteq] : Date.today, 'data-today': Date.today %> ~ <%= f.text_field :plan_date_lteq, class: 'form-control date-picker', value: params[:q] ? params[:q][:plan_date_lteq] : Date.today, 'data-today': Date.today %> 10 </div> 11 </div> 12 13 <div class="row row_input"> 14 <label class="col-sm-1 control-label" for="">所属</label> 15 <div class="col-sm-8"> 16 <%= f.collection_select :department_id_eq, Department.all, :id, :dep_name, { include_blank: true } , { class: 'form-control' } %> 17 <%= f.collection_select :section_id_eq, params[:q].present? ? Section.where(department_id: params[:q][:department_id_eq]).all : [], :id, :sec_name, { include_blank: true }, { class: 'form-control' } %> 18 <%= f.collection_select :group_id_eq, params[:q].present? ? Group.where(section_id: params[:q][:section_id_eq]).all : [], :id, :grp_name, { include_blank: true }, { class: 'form-control' } %> 19 <%= f.collection_select :employee_id_eq, @employees, :id, :emp_name, { include_blank: true }, { class: 'form-control' } %> 20 </div> 21 </div> 22 23 <div class="row row_input"> 24 <label class="col-sm-1 control-label" for="">社員名</label> 25 <div class="col-sm-8"> 26 <%= f.text_field :employee_emp_name_cont, class: 'form-control' %> 27 </div> 28 </div> 29 30 31 </div> 32 </div> 33 <br> 34 <div class="row"> 35 <div class="col-sm-12 text-center"> 36 <button class="btn btn-default btn-primary" type="submit"><i class="fa fa-search"></i> 検索</button> 37 <button class="btn btn-default" id="search_reset">クリア</button> 38 </div> 39 </div> 40 <% end %> 41 </div> 42 43 44
ransack を使用した場合の挙動(form が作成される、URI クエリ文字列が付与される etc...)を観察してみると、オリジナル版の実装のヒントになるかもしれません
回答1件
あなたの回答
tips
プレビュー