こんにちは。
現在プログラミングの構築を行なっており、その中でindexで検索された順番をユーザーごとに保存してshowで引き出す方法についてお伺いしたく存じます。
以下、現在のプログラムです。
index
1<div class="heading"><h2>リスト検索</h2></div> 2 3<%= search_form_for @q do |f| %> 4 <table width = "90%"> 5 <col width="20%"> 6 <col width="30%"> 7 <col width="20%"> 8 <col width="30%"> 9 <tbody> 10 <tr> 11 <th colspan = "4">検索</th> 12 </tr> 13 <tr> 14 <th>会社名</th> 15 <td><%= f.search_field :company_cont, type: "text" %></td> 16 17 ... 18 19 <tr> 20 <th colspan = "4" ><%= f.submit '検索' %></th> 21 </tr> 22 <% end %> 23 </tbody> 24 </table>
ControllerDefIndex
1 @q = Customer.ransack(params[:q]) 2 @customers = @q.result
上記の条件では、showをクリックして、以下の前へ、次へを押すとsearch条件が解除されてしまいます。
(現在コードをいじっているので、適正なコードではないかもしれません。)
<% if prev_customer = @customer.prev_customer %> <%= link_to "前へ", customer_path(prev_customer), class: "prev btn btn-danger" %> <% end %> <% if next_customer = @customer.next_customer %> <%= link_to "次へ", customer_path(next_customer), class: "next btn btn-danger" %> <% end %>
理想としては、
indexでid1, id3, id5と検索されたものを
showで移動してもid1, id3, id5と移動出来るようにしたいのですが、
現在はid1, id2, id3とransackが解除されてしまいます。
ここを解決する方法としてcustomers_search_orderのデータベースを作りました。
customers_search_order
1class CreateCustomersSearchOrders < ActiveRecord::Migration[5.1] 2 def change 3 create_table :customers_search_orders do |t| 4 t.integer :admin_id 5 t.integer :customer_id 6 t.integer :prev_customer_id 7 t.integer :next_customer_id 8 t.timestamps 9 end 10 end 11end 12
これに検索内容を保存してshowでも見られるようにプログラムしたいのですが、残念ながらここから先の進め方、プログラムの仕方がわかりません。
どなたかご教示頂けないでしょうか?
よろしくお願い致します。
def index @q = Customer.ransack(params[:q]) @customers = @q.result @customers = @customers.where( id: last_call_customer_ids ) if !last_call_customer_ids.nil? @customers = @customers.page(params[:page]).per(100) end def show @customer = Customer.page(params[:page]).per(1) @call = Call.new @prev_customer = Customer.find_by(id: params[:id]) @next_customer = Customer.find_by(id: params[:id]) end
上記の形式の場合、pageを指定するとshowのviewsの中にエラーが出てきてしまいます。
ActionView::Template::Error (undefined method `company' for #<Customer::ActiveRecord_Relation:0x00007f9cf8afddd0> Did you mean? compact):
また、showのpaginateの指定は以下となります。
<%= paginate @customer, class: "prev btn btn-danger" %>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/19 06:14
2019/09/19 06:46
2019/09/19 07:37
2019/09/19 08:12
2019/09/19 08:16
2019/09/20 02:19
2019/09/20 02:43
2019/09/20 03:17
2019/09/20 06:12
2019/09/20 10:07
2019/09/20 10:36
2019/09/20 10:37
2019/09/21 07:02
2019/09/21 10:10