質問編集履歴
2
タイトルの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
入力画面で別モデルからデータを参照、表示
|
1
|
+
入力画面で別モデルからデータを参照、表示したい
|
test
CHANGED
File without changes
|
1
記述忘れ
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
入力画面で別モデルから
|
1
|
+
入力画面で別モデルからデータを参照、表示
|
test
CHANGED
@@ -4,24 +4,28 @@
|
|
4
4
|
|
5
5
|
注文画面から 商品コード と 数量 を必要な分だけ入力すれば注文できるシステムを作成したいです。
|
6
6
|
|
7
|
+
具体的には注文フォームで商品コードテキストフィールドのフォーカスが外れると商品モデルから該当する商品コードのデータの内容を表示させたいです。
|
8
|
+
|
7
9
|
|
8
10
|
|
9
11
|
###問題点
|
10
12
|
|
11
|
-
商品コードを入力し
|
13
|
+
0. 商品コードを入力してフォーカスがはずれても各項目にデータが表示されない
|
12
|
-
|
13
|
-
(またできればcreateアクション時に注文明細テーブルにschema.rbに記載されているカラム項目を保存するためのnew.html.erbの変更点を教えていただけると大変助かります。)
|
14
14
|
|
15
15
|
ご助力いただきますようお願いいたします。
|
16
16
|
|
17
17
|
###補足
|
18
18
|
|
19
|
-
|
19
|
+
下記サイトを参考にソースを作成しました。
|
20
20
|
|
21
21
|
http://ruby.studio-kingdom.com/rails/guides/form_helpers#building_complex_forms
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
+
https://doruby.jp/users/maya/entries/_Rails_Rails_Ajax_Ajax_
|
26
|
+
|
27
|
+
|
28
|
+
|
25
29
|
###開発環境
|
26
30
|
|
27
31
|
OS:mac
|
@@ -32,15 +36,9 @@
|
|
32
36
|
|
33
37
|
|
34
38
|
|
35
|
-
###試したこと
|
36
|
-
|
37
|
-
「rails db 別モデル表示」などの条件で調べましたが、該当するものが見つかりませんでした。
|
38
|
-
|
39
|
-
|
40
|
-
|
41
39
|
###ソースコード
|
42
40
|
|
43
|
-
|
41
|
+
model
|
44
42
|
|
45
43
|
```ruby
|
46
44
|
|
@@ -60,8 +58,6 @@
|
|
60
58
|
|
61
59
|
class Order < ActiveRecord::Base
|
62
60
|
|
63
|
-
belongs_to :user
|
64
|
-
|
65
61
|
has_many :orderdetails
|
66
62
|
|
67
63
|
accepts_nested_attributes_for :orderdetails
|
@@ -70,7 +66,35 @@
|
|
70
66
|
|
71
67
|
|
72
68
|
|
69
|
+
#app/models/product.rb
|
70
|
+
|
71
|
+
class Product < ActiveRecord::Base
|
72
|
+
|
73
|
+
has_many :orderdetail
|
74
|
+
|
75
|
+
end
|
76
|
+
|
73
|
-
```
|
77
|
+
```
|
78
|
+
|
79
|
+
app/config/routes.rb
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
|
83
|
+
resources :orders
|
84
|
+
|
85
|
+
resources :orderdetails do
|
86
|
+
|
87
|
+
post 'search_product', on: :collection
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
resources :products
|
94
|
+
|
95
|
+
```
|
96
|
+
|
97
|
+
|
74
98
|
|
75
99
|
schema.rb
|
76
100
|
|
@@ -138,7 +162,7 @@
|
|
138
162
|
|
139
163
|
|
140
164
|
|
141
|
-
app/views/orders/new.html.erb
|
165
|
+
View(app/views/orders/new.html.erb)
|
142
166
|
|
143
167
|
```ruby
|
144
168
|
|
@@ -178,21 +202,19 @@
|
|
178
202
|
|
179
203
|
<tr>
|
180
204
|
|
181
|
-
|
182
|
-
|
183
|
-
<td><
|
205
|
+
<td><%= orderdetail.text_field 'code_no' %></td>
|
184
|
-
|
206
|
+
|
185
|
-
<td>
|
207
|
+
<td><div id="part_number"></div></td><!--品番を表示したい-->
|
186
|
-
|
208
|
+
|
187
|
-
<td>
|
209
|
+
<td><div id="product_name"></div></td><!--品名を表示したい-->
|
188
210
|
|
189
211
|
<td><%= orderdetail.text_field 'quantity' %></td>
|
190
212
|
|
191
|
-
<td>
|
213
|
+
<td><div id="shipping_unit"></div></td><!--出荷単位を表示したい-->
|
192
|
-
|
214
|
+
|
193
|
-
<td>
|
215
|
+
<td><div id="price"></div></td><!--販売価格を表示したい-->
|
194
|
-
|
216
|
+
|
195
|
-
<td>
|
217
|
+
<td><div id="total_price"></div></td><!--金額を表示したい-->
|
196
218
|
|
197
219
|
</tr>
|
198
220
|
|
@@ -200,47 +222,17 @@
|
|
200
222
|
|
201
223
|
<% end %>
|
202
224
|
|
203
|
-
<tr>
|
204
|
-
|
205
|
-
<td colspan="5"></td>
|
206
|
-
|
207
|
-
<td>小計</td>
|
208
|
-
|
209
|
-
<td></td>
|
210
|
-
|
211
|
-
</tr>
|
212
|
-
|
213
|
-
<tr>
|
214
|
-
|
215
|
-
<td colspan="5"></td>
|
216
|
-
|
217
|
-
<td>送料</td>
|
218
|
-
|
219
|
-
<td></td>
|
220
|
-
|
221
|
-
</tr>
|
222
|
-
|
223
|
-
<tr>
|
224
|
-
|
225
|
-
<td colspan="5"></td>
|
226
|
-
|
227
|
-
<td>合計</td>
|
228
|
-
|
229
|
-
<td></td>
|
230
|
-
|
231
|
-
</tr>
|
232
|
-
|
233
225
|
</tbody>
|
234
226
|
|
235
227
|
</table>
|
236
228
|
|
237
229
|
```
|
238
230
|
|
239
|
-
|
240
|
-
|
241
|
-
|
231
|
+
controller
|
242
|
-
|
232
|
+
|
243
|
-
```ruby
|
233
|
+
```ruby
|
234
|
+
|
235
|
+
#app/controllers/orders_controller.rb
|
244
236
|
|
245
237
|
def new
|
246
238
|
|
@@ -250,7 +242,7 @@
|
|
250
242
|
|
251
243
|
#カートの入力欄表示初期値
|
252
244
|
|
253
|
-
@count =
|
245
|
+
@count = 2
|
254
246
|
|
255
247
|
|
256
248
|
|
@@ -260,16 +252,66 @@
|
|
260
252
|
|
261
253
|
end
|
262
254
|
|
263
|
-
|
255
|
+
|
264
|
-
|
265
|
-
|
256
|
+
|
266
|
-
|
257
|
+
|
258
|
+
|
267
|
-
|
259
|
+
#app/controllers/orderdetails_controller.rb
|
268
|
-
|
260
|
+
|
269
|
-
|
261
|
+
def new
|
270
|
-
|
262
|
+
|
271
|
-
|
263
|
+
@orderdetail = Orderdetail.new
|
272
|
-
|
264
|
+
|
273
|
-
|
265
|
+
end
|
266
|
+
|
267
|
+
|
268
|
+
|
274
|
-
|
269
|
+
def search_product
|
270
|
+
|
271
|
+
@product = Product.find_by(code_no: params[:code_no])
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
render layout: false
|
276
|
+
|
277
|
+
end
|
278
|
+
|
279
|
+
|
280
|
+
|
275
|
-
```
|
281
|
+
```
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
app/views/orderdetails/search_product.coffee
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
```ruby
|
290
|
+
|
291
|
+
$('#part_number’).text(‘<%= @product.part_number %>') #品番
|
292
|
+
|
293
|
+
$('#product_name’).text(‘<%= @product.product_name %>') #品名
|
294
|
+
|
295
|
+
$('#shipping_unit’).text(‘<%= @product.shipping_unit %>') #出荷単位
|
296
|
+
|
297
|
+
$('#price_1’).text(‘<%= @product.selling_price1 %>') #販売価格
|
298
|
+
|
299
|
+
```
|
300
|
+
|
301
|
+
app/assets/javascripts/orderdetails.coffee
|
302
|
+
|
303
|
+
```ruby
|
304
|
+
|
305
|
+
$ ->
|
306
|
+
|
307
|
+
# テキストボックスからフォーカスが外れたらフォームをsubmit
|
308
|
+
|
309
|
+
$('#code_no').change( ->
|
310
|
+
|
311
|
+
$product_id.val($(this).val()) # 選択された商品のIDをパラメータとして渡す
|
312
|
+
|
313
|
+
$product_id.closest('form').submit()
|
314
|
+
|
315
|
+
)
|
316
|
+
|
317
|
+
```
|