質問編集履歴

1

内容加筆

2018/08/05 07:36

投稿

og33
og33

スコア14

test CHANGED
@@ -1 +1 @@
1
- submitで複数ードをcreateしたい
1
+ モデルに対して複数レードを一括登録したい
test CHANGED
@@ -1,7 +1,105 @@
1
1
  ### やりたいこと
2
2
 
3
+ 1つのモデルに対して複数レードを一括登録したい
4
+
5
+ ![イメージ説明](4dc39a1b3f66341cdd79f904a3a1447a.png)
6
+
7
+ ### 試したこと・考えたこと
8
+
9
+ ・やりたいことはフォームの一括登録であるので、それを調べたところ、以下のようにfields_forを利用したフォームの作り方を紹介した記事が多数見つかったが、今回やりたいことは、「form_for内で異なるモデルを編集できるようになる。」ことではない。やりたいことはまさしく下記のようなこと。
10
+
11
+ http://ruby-rails.hatenadiary.com/entry/20141208/1418018874#accepts_nested_attributes_for-form
12
+
13
+ ・オブジェクトを保存したいレコード分作成して保存することを考えたが、力技すぎるので却下。
14
+
15
+ ### 仕様
16
+
17
+ view:
18
+
19
+ ```
20
+
21
+ = Time.zone.today.strftime('%Y/%m/%d')
22
+
23
+ = form_for @new_tobanhyo do |f|
24
+
25
+ - @tobanhyos[false].each do |tobanhyo|
26
+
27
+ p
28
+
3
- 画像のようなフォームにおいて、1度のsubmitで複数のレコードをcreateしたいのですが、どのようにすればいいでしょうか?
29
+ = f.select :room_id, @rooms, :selected => tobanhyo.room.id
30
+
31
+ = f.select :role_id, @roles, :selected => tobanhyo.role.id
32
+
33
+ = f.date_field :start_of_period, value: Time.zone.today.strftime('%y/%m/%d')
34
+
35
+ = "---------------------"
36
+
37
+ - @tobanhyos[true].each do |tobanhyo|
38
+
39
+ p
40
+
41
+ = f.select :room_id, @rooms, :selected => tobanhyo.room.id
42
+
43
+ = f.select :role_id, @roles, :selected => tobanhyo.role.id
44
+
45
+ = f.date_field :start_of_period, value: Time.zone.today.strftime('%Y/%m/%d')
46
+
47
+ = f.submit
48
+
49
+ ```
50
+
51
+ もちろんこれでは一括登録はできず。
52
+
53
+ モデル:
54
+
55
+ ```
56
+
57
+ ActiveRecord::Schema.define(version: 20180603012133) do
4
58
 
5
59
 
6
60
 
61
+ create_table "roles", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
62
+
63
+ t.string "name"
64
+
7
- ![イメージ説明](4dc39a1b3f66341cdd79f904a3a1447a.png)
65
+ t.datetime "created_at", null: false
66
+
67
+ t.datetime "updated_at", null: false
68
+
69
+ end
70
+
71
+
72
+
73
+ create_table "rooms", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
74
+
75
+ t.string "name"
76
+
77
+ t.datetime "created_at", null: false
78
+
79
+ t.datetime "updated_at", null: false
80
+
81
+ end
82
+
83
+
84
+
85
+ create_table "tobanhyos", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
86
+
87
+ t.integer "room_id"
88
+
89
+ t.integer "role_id"
90
+
91
+ t.boolean "fixed"
92
+
93
+ t.datetime "created_at", null: false
94
+
95
+ t.datetime "updated_at", null: false
96
+
97
+ t.date "start_of_period"
98
+
99
+ end
100
+
101
+
102
+
103
+ end
104
+
105
+ ```