teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

情報追加

2019/08/20 23:49

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -7,4 +7,26 @@
7
7
  method next_customer をコントローラに追加するという方法でどうでしょうか
8
8
 
9
9
  #####
10
- 他にもいくつか問題が有ることにきがつきました。あとで時間ができたら追記します
10
+ 他にもいくつか問題が有ることにきがつきました。あとで時間ができたら追記し
11
+
12
+ ### 追記
13
+ 1) index.html に <%= link_to "詳細", customer_path(customer), というような記述があると思います。そこを customer_path(customer, q: params[:q]) にしてください。多分今はやっていないのでは?
14
+ showのviewとctrlでやり取りが必要ですが、それをindexから渡す必要があります
15
+
16
+ 2) 上にも書きましたが ransackを使うために、next,prevはmodelではなくctrlで行うほうがよいです。
17
+ ctrl show で @next_customer、@prev_customer を用意して渡す。
18
+ (これですと customer_path(@prev_customer, q: params[:q])でできるので新しいpath作らないで済みます)
19
+
20
+ 以下おせっかい
21
+ 次前の検索を id: で行ってますがこれ offset で行うと楽かな?と思います。将来 名前順にしたいとかにも対応しやすい。
22
+ ```
23
+ @offset = params[:id]
24
+ @customer = @q.result.offset(@offset).first
25
+ ```
26
+ viewには@prev_customerでなく、@offsetをわたし、customer_path(@offset-1, q: params[:q])とかする。 id でなく offset を騙して渡すわけです。
27
+ ですから、index.htmlでも
28
+ ```
29
+ @customers.each.with_index( (page - 1) * par_page ){|customer,offset|
30
+ link_to 表示, customer_path(offset, q: params[:q])
31
+ }
32
+ ```

1

情報追加

2019/08/20 23:49

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -4,4 +4,7 @@
4
4
 
5
5
  link_to custer_next_customer(@customer, q: params[:q])
6
6
  とでもし、
7
- method next_customer をコントローラに追加するという方法でどうでしょうか
7
+ method next_customer をコントローラに追加するという方法でどうでしょうか
8
+
9
+ #####
10
+ 他にもいくつか問題が有ることにきがつきました。あとで時間ができたら追記します