質問編集履歴
5
追記修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -79,12 +79,13 @@
|
|
79
79
|
include ActiveModel::Model
|
80
80
|
attr_accessor :name, :temp_cont_item_stock, :expiration_date
|
81
81
|
|
82
|
-
def initialize(attributes={})
|
82
|
+
def initialize(attributes={})#attributesにはパラメータが入る。
|
83
|
-
|
83
|
+
|
84
84
|
if attributes.present?
|
85
|
-
attrs = attributes.to_unsafe_h.dup#
|
85
|
+
attrs = attributes.to_unsafe_h.dup#受け取ったストロングパラメータをハッシュ化
|
86
86
|
|
87
87
|
if attrs["temp_cont_item_stock"]["expiration_date(1i)"].present?
|
88
|
+
#日時作成
|
88
89
|
attrs[:expiration_date] = DateTime.new(
|
89
90
|
attrs["temp_cont_item_stock"]["expiration_date(1i)"].to_i,
|
90
91
|
attrs["temp_cont_item_stock"]["expiration_date(2i)"].to_i,
|
4
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -68,4 +68,34 @@
|
|
68
68
|
おそらくパラメータ内のネストした日時情報をinitializeメソッド内で取得すればいいのですが、その方法がわからなくて困っています。
|
69
69
|
|
70
70
|
どうすれば、うまく変換できるでしょうか。
|
71
|
-
回答をよろしくお願いします。
|
71
|
+
回答をよろしくお願いします。
|
72
|
+
|
73
|
+
|
74
|
+
###追記(最終的に成功したコード)
|
75
|
+
回答者からのアドバイスをもとに最終的に成功したコードをここに記します。
|
76
|
+
(コメント欄だと見ずらいのでここに記します)。
|
77
|
+
```ここに言語を入力
|
78
|
+
class EditDractContractForm
|
79
|
+
include ActiveModel::Model
|
80
|
+
attr_accessor :name, :temp_cont_item_stock, :expiration_date
|
81
|
+
|
82
|
+
def initialize(attributes={})
|
83
|
+
binding.pry#デバック用
|
84
|
+
if attributes.present?
|
85
|
+
attrs = attributes.to_unsafe_h.dup# dupしたほうがいいかはわかりませんが
|
86
|
+
|
87
|
+
if attrs["temp_cont_item_stock"]["expiration_date(1i)"].present?
|
88
|
+
attrs[:expiration_date] = DateTime.new(
|
89
|
+
attrs["temp_cont_item_stock"]["expiration_date(1i)"].to_i,
|
90
|
+
attrs["temp_cont_item_stock"]["expiration_date(2i)"].to_i,
|
91
|
+
attrs["temp_cont_item_stock"]["expiration_date(3i)"].to_i,
|
92
|
+
attrs["temp_cont_item_stock"]["expiration_date(4i)"].to_i,
|
93
|
+
attrs["temp_cont_item_stock"]["expiration_date(5i)"].to_i
|
94
|
+
)
|
95
|
+
end
|
96
|
+
super(attrs)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
```
|
100
|
+
|
101
|
+
これでフォームオブジェクト内なら、expiration_dateとすれば日時情報を取得できます。
|
3
タイトル修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
パラメータでネストした日時情報をフォームオブジェクトに渡したい
|
1
|
+
[rails5]パラメータでネストした日時情報をフォームオブジェクトに渡したい
|
body
CHANGED
File without changes
|
2
説明追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
<ActionController::Parameters {"name"=>"テスト契約", "temp_cont_item_stock"=><ActionController::Parameters {"description"=>"契約説明文です", "expiration_date(1i)"=>"2021", "expiration_date(2i)"=>"4", "expiration_date(3i)"=>"18", "expiration_date(4i)"=>"22", "expiration_date(5i)"=>"40"} permitted: true>} permitted: true>
|
42
42
|
```
|
43
43
|
フォームオブジェクトに日時情報(expiration_date)を渡そうとすると5つに分割された状態になってしまいます。
|
44
|
-
|
44
|
+
このままでは日時情報をフォームオブジェクト側でうまく受け取ることができません。
|
45
45
|
そこで5つに分かれてしまった日時情報を一つにまとまった日時情報に変換し直そうとしたのですがうまくいきませんでした。
|
46
46
|
|
47
47
|
フォームオブジェクト側
|
1
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
一つのフォーム入力画面から複数の異なったモデルを更新したいと考えています。
|
4
4
|
|
5
5
|
|
6
|
-
ただ、パラメータでネストした(fields_forで子モデルに入力する)日時の情報を
|
6
|
+
ただ、パラメータでネストした(fields_forで子モデルに入力する)**日時の情報を
|
7
|
-
FormObjectに渡して日時変換し
|
7
|
+
FormObjectに渡して正しい日時情報に変換したい**のですが、やり方がわからず困っています。
|
8
8
|
|
9
9
|
|
10
10
|
### 現状のソースコード
|