質問編集履歴

2

タイトルの変更

2017/11/27 04:50

投稿

begenner
begenner

スコア79

test CHANGED
@@ -1 +1 @@
1
- 入力画面で別モデルからデータを参照、表示
1
+ 入力画面で別モデルからデータを参照、表示したい
test CHANGED
File without changes

1

記述忘れ

2017/11/27 04:50

投稿

begenner
begenner

スコア79

test CHANGED
@@ -1 +1 @@
1
- 入力画面で別モデルからajaxでデータを参照、表示
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
- 注文画面から商品を一度で注文をできるようにするために、下記サイト9章(複雑なフォームの構築)を参考にしてベースを作成してい
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><div id=""><%= orderdetail.text_field 'code_no' %></div></td>
205
+ <td><%= orderdetail.text_field 'code_no' %></td>
184
-
206
+
185
- <td>品番を表示<div id="part_number"></div></td>
207
+ <td><div id="part_number"></div></td><!--品番を表示したい-->
186
-
208
+
187
- <td>品名を表示<div id="product_name"></div></td>
209
+ <td><div id="product_name"></div></td><!--品名を表示したい-->
188
210
 
189
211
  <td><%= orderdetail.text_field 'quantity' %></td>
190
212
 
191
- <td>出荷単位<div id="shipping_unit"></div></td>
213
+ <td><div id="shipping_unit"></div></td><!--出荷単位を表示したい-->
192
-
214
+
193
- <td>販売価格<div id="price"></div></td>
215
+ <td><div id="price"></div></td><!--販売価格を表示したい-->
194
-
216
+
195
- <td>金額</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
- app/controllers/orders_controller.rb
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 = 5
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
- private
259
+ #app/controllers/orderdetails_controller.rb
268
-
260
+
269
- def order_params
261
+ def new
270
-
262
+
271
- params.require(:order).permit(:user_id)
263
+ @orderdetail = Orderdetail.new
272
-
264
+
273
- end
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
+ ```