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

回答編集履歴

1

「ルーティングで考える」を追記

2018/01/20 11:59

投稿

scivola
scivola

スコア2108

answer CHANGED
@@ -40,4 +40,57 @@
40
40
 
41
41
  > 既存のサイトやアプリ(例えばツイッターやインスタグラムなど)と全く同じものを作って学んでいこうと思うのですが、
42
42
 
43
- ツイッターやインスタグラムと同じものが一人で作れたらあなたはスーパープログラマーですよ!
43
+ ツイッターやインスタグラムと同じものが一人で作れたらあなたはスーパープログラマーですよ!
44
+
45
+ (追記)
46
+
47
+ 「ルーティングで考える」の例を挙げます。`routes.rb` を考える,と言い換えてもいいですね。
48
+
49
+ たとえば書籍の情報を扱うんだったら,
50
+
51
+ ```rb
52
+ resources :books
53
+ ```
54
+
55
+ ですよね。
56
+ でも一般ユーザーと管理者とで操作体系を分けるんだったら
57
+
58
+ ```rb
59
+ resources :books
60
+
61
+ namespace :admin
62
+ resources :books
63
+ end
64
+ ```
65
+
66
+ かな,とか。(この場合,`BooksController` と `Admin::BooksController` のようにコントローラーも別になります)
67
+ おっとまて,一般ユーザーは閲覧だけができることにしよう。じゃあ
68
+
69
+ ```rb
70
+ resources :books, only: %i[index show]
71
+
72
+ namespace :admin
73
+ resources :books
74
+ end
75
+ ```
76
+
77
+ だな。
78
+ ええと,表紙画像を `books/123/cover_image` みたいな URL で見せたい(これは `books/123` のビューから利用します)ので
79
+
80
+ ```rb
81
+ resources :books, only: %i[index show] do
82
+ member do
83
+ get :cover_image
84
+ end
85
+ end
86
+
87
+ namespace :admin
88
+ resources :books
89
+ end
90
+ ```
91
+
92
+ にするか。
93
+
94
+ てな感じで考えていくんです。
95
+
96
+ なお,私は達人ではないので,こういう持っていき方がベストかどうか分かりませんが。