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

回答編集履歴

1

コメントへの回答

2021/11/05 14:05

投稿

neko_daisuki
neko_daisuki

スコア2090

answer CHANGED
@@ -32,4 +32,30 @@
32
32
  ```ruby
33
33
  # ダメ!
34
34
  @books = Book.order(params[:order])
35
+ ```
36
+
37
+ ## 追記
38
+
39
+ order_by がハッシュを返すようにします。
40
+ params[:order] が配列 ASC に含まれるとき { params[:order] => :asc }
41
+ DESC に含まれるとき { params[:order] => :desc }
42
+ 含まれない時(リーロードしたとき) { id: :asc} を返します
43
+
44
+ ```ruby
45
+ def index
46
+ @books = Book.order(order_by)
47
+ end
48
+
49
+ ASC = ["evaluation"]
50
+ DESC = ["updated_at", "created_at"]
51
+
52
+ def order_by
53
+ if ASC.include?(params[:order])
54
+ { params[:order] => :asc }
55
+ elsif DESC.include?(params[:order])
56
+ { params[:order] => :desc }
57
+ else
58
+ { id: :asc }
59
+ end
60
+ end
35
61
  ```