forked from shrinerb/shrine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathalbums.rb
64 lines (55 loc) · 1.33 KB
/
albums.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
require "./routes/base"
require "./models/album"
require "./models/photo"
module Routes
class Albums < Base
route do |r|
# '/albums'
r.is do
# GET '/albums'
r.get do
albums = Album.all
view("albums/index", locals: { albums: albums })
end
# POST '/albums'
r.post do
album = Album.new(params[:album])
if album.valid?
album.save
r.redirect album_path(album)
else
view("albums/new", locals: { album: album })
end
end
end
# GET '/albums/new'
r.get "new" do
album = Album.new
view("albums/new", locals: { album: album })
end
# '/albums/:id'
r.is Integer do |album_id|
album = Album[album_id] or not_found!
# GET '/albums/:id'
r.get do
view("albums/show", locals: { album: album })
end
# PUT '/albums/:id'
r.put do
album.set(params[:album])
if album.valid?
album.save
r.redirect album_path(album)
else
view("albums/show", locals: { album: album })
end
end
# DELETE '/albums/:id'
r.delete do
album.destroy
r.redirect albums_path
end
end
end
end
end