回答編集履歴
1
ajaxについて追記
test
CHANGED
@@ -4,9 +4,47 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
+
### 追記
|
8
|
+
|
9
|
+
データベースの値を更新するには、ajaxで値をrailsに渡す必要があります。
|
10
|
+
|
11
|
+
コントローラの詳細が分からないので、仮に POST /topic/:id/update_num というnumの値を+1するアクションがあるとします。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
#### Controller
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
|
19
|
+
def update_num
|
20
|
+
|
21
|
+
@topic = Topic.find(params[:id])
|
22
|
+
|
23
|
+
@topic.num + 1
|
24
|
+
|
25
|
+
@topic.save!
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
result = {
|
30
|
+
|
31
|
+
num: @topic.num
|
32
|
+
|
33
|
+
}
|
34
|
+
|
35
|
+
render json: result
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
#### View
|
44
|
+
|
7
45
|
```html
|
8
46
|
|
9
|
-
<div id="poll1"><%= @topic.num %></div></p>
|
47
|
+
<div id="poll1" data-id="<%= @topic.id %>"><%= @topic.num %></div></p>
|
10
48
|
|
11
49
|
|
12
50
|
|
@@ -22,11 +60,33 @@
|
|
22
60
|
|
23
61
|
$('#poll1').click(function() {
|
24
62
|
|
25
|
-
var
|
63
|
+
var id = $(this).attr('data-id');
|
26
64
|
|
27
|
-
var
|
65
|
+
var url = '/topic/' + id + '/update_num';
|
28
66
|
|
67
|
+
var params = {};
|
68
|
+
|
69
|
+
$.ajax({
|
70
|
+
|
71
|
+
type: 'POST',
|
72
|
+
|
73
|
+
dataType: 'json',
|
74
|
+
|
75
|
+
url: url,
|
76
|
+
|
77
|
+
data: params,
|
78
|
+
|
79
|
+
timeout: 5000
|
80
|
+
|
81
|
+
}).done(function(data, textStatus, jqXHR) {
|
82
|
+
|
29
|
-
$(this).text(n
|
83
|
+
$(this).text(data.num);
|
84
|
+
|
85
|
+
}).fail(function(jqXHR, textStatus, errorThrown) {
|
86
|
+
|
87
|
+
alert('エラーが発生しました');
|
88
|
+
|
89
|
+
});
|
30
90
|
|
31
91
|
});
|
32
92
|
|
@@ -35,3 +95,5 @@
|
|
35
95
|
</script>
|
36
96
|
|
37
97
|
```
|
98
|
+
|
99
|
+
|