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

質問編集履歴

5

追記修正

2019/05/04 02:36

投稿

zendendo
zendendo

スコア43

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
- binding.pry#デバック用
83
+
84
84
  if attributes.present?
85
- attrs = attributes.to_unsafe_h.dup# 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

追記

2019/05/04 02:36

投稿

zendendo
zendendo

スコア43

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

タイトル修正

2019/05/04 02:31

投稿

zendendo
zendendo

スコア43

title CHANGED
@@ -1,1 +1,1 @@
1
- パラメータでネストした日時情報をフォームオブジェクトに渡したい
1
+ [rails5]パラメータでネストした日時情報をフォームオブジェクトに渡したい
body CHANGED
File without changes

2

説明追加

2019/04/18 14:17

投稿

zendendo
zendendo

スコア43

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

誤字修正

2019/04/18 14:07

投稿

zendendo
zendendo

スコア43

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
  ### 現状のソースコード