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

質問編集履歴

10

修正

2020/09/02 10:34

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -220,9 +220,7 @@
220
220
 
221
221
  end
222
222
  ```
223
- **```ここに言語を入力
223
+
224
- ボールドテキスト
225
- ```**
226
224
  **ログ**
227
225
  ```ここに言語を入力
228
226
  Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000

9

説明の加筆

2020/09/02 10:33

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
1
+ **解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい**
2
2
 
3
3
  Railsで一括保存する機能を開発しています。
4
4
  [モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
@@ -7,12 +7,13 @@
7
7
  色々試しましたがどうしても解決できませんでした。
8
8
  足りない情報があれば指摘していただけると助かりますm(_ _)m
9
9
 
10
- 問題が発生するまでの流れ・手順
10
+ **問題が発生するまでの流れ・手順**
11
11
  new.html.erbでフォームに入力して登録ボタンを押した時
12
+
12
13
  ![イメージ説明](e3cc2fc7acf1eccdb2dd008dc3539afe.png)
13
14
 
14
- ※追記(最新の情報に修正)
15
+ **※追記(最新の情報に修正)
15
- new.html.erb
16
+ app/views/steps/new.html.erb**
16
17
  ```
17
18
  <%= form_with model: @steps, url: steps_path, local: true do |form| %>
18
19
  <% @steps.collection.each do |step| %>
@@ -26,7 +27,7 @@
26
27
  <%= link_to '戻る', step_path(current_user) %>
27
28
  <% end %>
28
29
  ```
29
- user.rb
30
+ **app/models/user.rb**
30
31
  ```
31
32
 
32
33
 
@@ -50,7 +51,7 @@
50
51
  end
51
52
  ```
52
53
 
53
- step.rb
54
+ **app/models/step.rb**
54
55
 
55
56
  ```ここに言語を入力
56
57
  # == Schema Information
@@ -78,7 +79,7 @@
78
79
  belongs_to :user
79
80
  end
80
81
  ```
81
- steps_collection.rb
82
+ **app/models/steps_collection.rb**
82
83
  ```
83
84
  # Stepのコレクションモデル
84
85
  class StepCollection
@@ -129,7 +130,7 @@
129
130
  end
130
131
  ```
131
132
 
132
- steps_controller.rb
133
+ **app/controllers/steps_controller.rb**
133
134
  ```ここに言語を入力
134
135
  class StepsController < ApplicationController
135
136
 
@@ -153,8 +154,77 @@
153
154
  params.require(:steps)
154
155
  end
155
156
  ```
156
- ログ
157
+ **app/helpers/sessions_helpers.rb**
157
158
  ```ここに言語を入力
159
+ module SessionsHelper
160
+
161
+ # 渡されたユーザーでログインする
162
+ def log_in(user)
163
+ session[:user_id] = user.id
164
+ end
165
+
166
+ # ユーザーのセッションを永続的にする
167
+ def remember(user)
168
+ user.remember
169
+ cookies.permanent.signed[:user_id] = user.id
170
+ cookies.permanent[:remember_token] = user.remember_token
171
+ end
172
+
173
+ # 記憶トークンcookieに対応するユーザーを返す
174
+ def current_user
175
+ if (user_id = session[:user_id])
176
+ @current_user ||= User.find_by(id: user_id)
177
+ elsif (user_id = cookies.signed[:user_id])
178
+ user = User.find_by(id: user_id)
179
+ if user && user.authenticated?(cookies[:remember_token])
180
+ log_in user
181
+ @current_user = user
182
+ end
183
+ end
184
+ end
185
+
186
+ # 渡されたユーザーがログイン済みユーザーであればtrueを返す
187
+ def current_user?(user)
188
+ user == current_user
189
+ end
190
+
191
+ # ユーザーがログインしていればtrue、その他ならfalseを返す
192
+ def logged_in?
193
+ !current_user.nil?
194
+ end
195
+
196
+ # 永続的セッションを破棄する
197
+ def forget(user)
198
+ user.forget
199
+ cookies.delete(:user_id)
200
+ cookies.delete(:remember_token)
201
+ end
202
+
203
+ # 現在のユーザーをログアウトする
204
+ def log_out
205
+ forget(current_user)
206
+ session.delete(:user_id)
207
+ @current_user = nil
208
+ end
209
+
210
+ # 記憶したURL (もしくはデフォルト値) にリダイレクト(フレンドリーフォワーディング)
211
+ def redirect_back_or(default)
212
+ redirect_to(session[:forwarding_url] || default)
213
+ session.delete(:forwarding_url)
214
+ end
215
+
216
+ # アクセスしようとしたURLを覚えておく
217
+ def store_location
218
+ session[:forwarding_url] = request.original_url if request.get?
219
+ end
220
+
221
+ end
222
+ ```
223
+ **```ここに言語を入力
224
+ ボールドテキスト
225
+ ```**
226
+ **ログ**
227
+ ```ここに言語を入力
158
228
  Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
159
229
  web_1 | Cannot render console from 172.19.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1
160
230
  web_1 | Processing by StepsController#create as HTML
@@ -175,7 +245,7 @@
175
245
 
176
246
 
177
247
  ```
178
- 環境
248
+ **環境**
179
249
  ```ここに言語を入力
180
250
  rails: 5.2.3
181
251
  ruby: 2.5.7

8

脱字の修正

2020/09/02 10:31

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -30,7 +30,8 @@
30
30
  ```
31
31
 
32
32
 
33
- #
33
+ #== Schema Information
34
+
34
35
  # id :bigint not null, primary key
35
36
  # admin :boolean default(FALSE)
36
37
  # email :string(255)

7

インデント修正

2020/09/02 09:02

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -15,17 +15,16 @@
15
15
  new.html.erb
16
16
  ```
17
17
  <%= form_with model: @steps, url: steps_path, local: true do |form| %>
18
- <% @steps.collection.each do |step| %>
18
+ <% @steps.collection.each do |step| %>
19
- <%= fields_for 'steps[]', step do |field| %>
19
+ <%= fields_for 'steps[]', step do |field| %>
20
- <%= field.label :step_name %>
20
+ <%= field.label :step_name %>
21
- <%= field.text_field :step_name , class: 'form-field' %>
21
+ <%= field.text_field :step_name, class: 'form-field' %>
22
- <br>
22
+ <br>
23
- <% end %>
24
23
  <% end %>
25
- <%= form.submit %>
26
- <%= link_to '戻る', step_path(current_user) %>
27
24
  <% end %>
28
-
25
+ <%= form.submit %>
26
+ <%= link_to '戻る', step_path(current_user) %>
27
+ <% end %>
29
28
  ```
30
29
  user.rb
31
30
  ```

6

new.html.erbとsteps_collection.rbとsteps_controller.rbを指摘されたところの修正

2020/09/01 22:19

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,8 @@
1
1
  解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
2
2
 
3
3
  Railsで一括保存する機能を開発しています。
4
- [モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示されました。
4
+ [モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
5
5
 
6
- ![イメージ説明](e5179c20320fc0777a7de22426975985.png)
7
-
8
-
9
6
  どのようにすれば一括保存をすることができますか?
10
7
  色々試しましたがどうしても解決できませんでした。
11
8
  足りない情報があれば指摘していただけると助かりますm(_ _)m
@@ -14,10 +11,9 @@
14
11
  new.html.erbでフォームに入力して登録ボタンを押した時
15
12
  ![イメージ説明](e3cc2fc7acf1eccdb2dd008dc3539afe.png)
16
13
 
17
-
14
+ ※追記(最新の情報に修正)
18
15
  new.html.erb
19
16
  ```
20
-
21
17
  <%= form_with model: @steps, url: steps_path, local: true do |form| %>
22
18
  <% @steps.collection.each do |step| %>
23
19
  <%= fields_for 'steps[]', step do |field| %>
@@ -29,7 +25,6 @@
29
25
  <%= form.submit %>
30
26
  <%= link_to '戻る', step_path(current_user) %>
31
27
  <% end %>
32
- </div>
33
28
 
34
29
  ```
35
30
  user.rb
@@ -92,19 +87,21 @@
92
87
  extend ActiveModel::Translation
93
88
  include ActiveModel::AttributeMethods
94
89
  include ActiveModel::Validations
95
- STEP_NUM = 3 # 同時にstepを作成する数
90
+ STEP_NUM = 3 # 同時にstepを作成する数
96
91
  attr_accessor :collection
97
92
 
98
93
  # 初期化メソッド
99
- def initialize(attributes = [])
94
+ def initialize(current_user,attributes = [])
100
95
  if attributes.present?
101
96
  self.collection = attributes.map do |value|
97
+ # 修正
102
98
  Step.new(
99
+ user_id: value['current_user.id'],
103
- step_name: value['step_name'],
100
+ step_name: value['step_name']
104
101
  )
105
102
  end
106
103
  else
107
- self.collection = STEP_NUM.times.map{ Step.new }
104
+ self.collection = STEP_NUM.times.map { Step.new }
108
105
  end
109
106
  end
110
107
 
@@ -132,16 +129,16 @@
132
129
  end
133
130
  ```
134
131
 
135
- steps_controller
132
+ steps_controller.rb
136
133
  ```ここに言語を入力
137
134
  class StepsController < ApplicationController
138
135
 
139
136
  def new
140
- @steps = StepCollection.new
137
+ @steps = StepCollection.new(current_user)
141
138
  end
142
139
 
143
140
  def create
144
- @steps = StepCollection.new(step_params)
141
+ @steps = StepCollection.new(current_user, step_params)
145
142
  if @steps.save
146
143
  flash[:success] = '成功しました!'
147
144
  redirect_to step_path(current_user)
@@ -153,28 +150,33 @@
153
150
  private
154
151
 
155
152
  def step_params
156
- params.require(:steps).permit(:step_name)
153
+ params.require(:steps)
157
154
  end
158
155
  ```
159
156
  ログ
160
157
  ```ここに言語を入力
161
- web_1 | Started POST "/steps" for 172.24.0.1 at 2020-08-31 14:17:33 +0000
162
- web_1 | Cannot render console from 172.24.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1
163
- web_1 | (0.8ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
164
- web_1 | Processing by StepsController#create as HTML
165
- web_1 | Parameters: {"utf8"=>"✓", "authenticity_token"=>"JshuOaBHrihQuBKZEQ7bvTGY/NgBB8tekeuRAe9nYBIdvIahrJmhUj2mVPnVuZKWelDB3QyX8kLMS2D8N36Npw==", "steps"=>[{"step_name"=>"step"}, {"step_name"=>"step2"}, {"step_name"=>"step3"}], "commit"=>"登録する"}
166
- web_1 | User Load (1.6ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 8 LIMIT 1
167
- web_1 | Completed 500 Internal Server Error in 129ms (ActiveRecord: 22.2ms)
168
- web_1 |
169
- web_1 |
170
- web_1 |
171
- web_1 | NoMethodError (undefined method `permit' for #<Array:0x00007fccd5a3d140>):
172
- web_1 |
173
- web_1 | app/controllers/steps_controller.rb:62:in `step_params'
174
- web_1 | app/controllers/steps_controller.rb:40:in `create'
158
+ Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
159
+ web_1 | Cannot render console from 172.19.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1
160
+ web_1 | Processing by StepsController#create as HTML
161
+ web_1 | Parameters: {"utf8"=>"✓", "authenticity_token"=>"pZy8W+7yYOGz+BNc8CfWRJW+rBlkVX1ctV5OS7DWHFCe6FTD4ixvm97mVTw0kJ9v3naRHGnFREDo/r+2aM/x5Q==", "steps"=>[{"step_name"=>"step"}, {"step_name"=>"step1"}, {"step_name"=>"step2"}], "commit"=>"登録する"}
162
+ web_1 | User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 8 LIMIT 1
163
+ web_1 | (0.3ms) BEGIN
164
+ web_1 | (0.3ms) ROLLBACK
165
+ web_1 | "エラー"
166
+ web_1 | Rendering steps/new.html.erb within layouts/application
167
+ web_1 | Rendered steps/_form.html.erb (2.3ms)
168
+ web_1 | Rendered steps/new.html.erb within layouts/application (14.7ms)
169
+ web_1 | Rendered layouts/_shim.html.erb (0.4ms)
170
+ web_1 | Rendered layouts/_head.html.erb (441.1ms)
171
+ web_1 | Rendered layouts/_header.html.erb (2.3ms)
172
+ web_1 | Rendered layouts/_flash_messages.html.erb (0.4ms)
173
+ web_1 | Rendered layouts/_footer.html.erb (2.0ms)
174
+ web_1 | Completed 200 OK in 644ms (Views: 563.5ms | ActiveRecord: 3.0ms)
175
175
 
176
176
 
177
177
  ```
178
178
  環境
179
+ ```ここに言語を入力
179
180
  rails: 5.2.3
180
- ruby: 2.5.7
181
+ ruby: 2.5.7
182
+ ```

5

説明の加筆

2020/09/01 22:15

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,7 @@
8
8
 
9
9
  どのようにすれば一括保存をすることができますか?
10
10
  色々試しましたがどうしても解決できませんでした。
11
+ 足りない情報があれば指摘していただけると助かりますm(_ _)m
11
12
 
12
13
  問題が発生するまでの流れ・手順
13
14
  new.html.erbでフォームに入力して登録ボタンを押した時

4

タグの追加

2020/08/31 14:57

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
File without changes

3

説明の加筆

2020/08/31 14:44

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -175,5 +175,5 @@
175
175
 
176
176
  ```
177
177
  環境
178
- rails 5.2.3
178
+ rails: 5.2.3
179
- ruby:2.5.7
179
+ ruby: 2.5.7

2

説明の加筆

2020/08/31 14:30

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,11 @@
9
9
  どのようにすれば一括保存をすることができますか?
10
10
  色々試しましたがどうしても解決できませんでした。
11
11
 
12
+ 問題が発生するまでの流れ・手順
13
+ new.html.erbでフォームに入力して登録ボタンを押した時
14
+ ![イメージ説明](e3cc2fc7acf1eccdb2dd008dc3539afe.png)
12
15
 
16
+
13
17
  new.html.erb
14
18
  ```
15
19
 

1

説明の加筆

2020/08/31 14:29

投稿

White_fox
White_fox

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
2
2
 
3
+ Railsで一括保存する機能を開発しています。
3
- [モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示されたのですが
4
+ [モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示されまし
4
5
 
5
6
  ![イメージ説明](e5179c20320fc0777a7de22426975985.png)
6
7