File tree Expand file tree Collapse file tree 3 files changed +81
-0
lines changed
assets/javascripts/components Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change
1
+ @RecordForm = React .createClass
2
+ getInitialState : ->
3
+ title : ' '
4
+ date : ' '
5
+ amount : ' '
6
+
7
+ valid : ->
8
+ @state .title && @state .date && @state .amount
9
+
10
+ handleChange : (e ) ->
11
+ name = e .target .name
12
+ @ setState " #{ name } " : e .target .value
13
+
14
+ handleSubmit : (e ) ->
15
+ e .preventDefault ()
16
+ $ .post ' ' , { record : @state }, (data ) =>
17
+ @props .handleNewRecord data
18
+ @ setState @ getInitialState ()
19
+ , ' JSON'
20
+
21
+ render : ->
22
+ React .DOM .form
23
+ className : ' form-inline'
24
+ onSubmit : @handleSubmit
25
+ React .DOM .div
26
+ className : ' form-group'
27
+ React .DOM .input
28
+ type : ' text'
29
+ className : ' form-control'
30
+ placeholder : ' Date'
31
+ name : ' date'
32
+ value : @state .date
33
+ onChange : @handleChange
34
+ React .DOM .div
35
+ className : ' form-group'
36
+ React .DOM .input
37
+ type : ' text'
38
+ className : ' form-control'
39
+ placeholder : ' Title'
40
+ name : ' title'
41
+ value : @state .title
42
+ onChange : @handleChange
43
+ React .DOM .div
44
+ className : ' form-group'
45
+ React .DOM .input
46
+ type : ' number'
47
+ className : ' form-control'
48
+ placeholder : ' Amount'
49
+ name : ' amount'
50
+ value : @state .amount
51
+ onChange : @handleChange
52
+ React .DOM .button
53
+ type : ' submit'
54
+ className : ' btn btn-primary'
55
+ disabled : ! @ valid ()
56
+ ' Create record'
Original file line number Diff line number Diff line change 1
1
@Records = React .createClass
2
2
getInitialState : ->
3
3
records : @props .data
4
+
4
5
getDefaultProps : ->
5
6
records : []
7
+
8
+ addRecord : (record ) ->
9
+ records = @state .records .slice ()
10
+ records .push record
11
+ @ setState records : records
12
+
6
13
render : ->
7
14
React .DOM .div
8
15
className : ' records'
9
16
React .DOM .h2
10
17
className : ' title'
11
18
' Records'
19
+ React .createElement RecordForm, handleNewRecord : @addRecord
20
+ React .DOM .hr null
12
21
React .DOM .table
13
22
className : ' table table-bordered'
14
23
React .DOM .thead null ,
Original file line number Diff line number Diff line change @@ -2,4 +2,20 @@ class RecordsController < ApplicationController
2
2
def index
3
3
@records = Record . all
4
4
end
5
+
6
+ def create
7
+ @record = Record . new ( record_params )
8
+
9
+ if @record . save
10
+ render json : @record
11
+ else
12
+ render json : @record . errors , status : :unprocessable_entity
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def record_params
19
+ params . require ( :record ) . permit ( :title , :amount , :date )
20
+ end
5
21
end
You can’t perform that action at this time.
0 commit comments