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

回答編集履歴

1

追記

2019/08/21 13:59

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -3,4 +3,32 @@
3
3
  の部分。
4
4
 
5
5
  newの画像の様にしたいのですか?
6
- new、edit のviewのソースもつけて下さい。
6
+ new、edit のviewのソースもつけて下さい。
7
+
8
+ 追記
9
+ <% for num in 1..9 do %> の中に有る<%= f.fields_for :players do |p| %>が全選手分を書き出させてます。newのときはorderにまだplayerが登録されていないので繰り返しがなかったのです。
10
+
11
+ ですので、ここは p に 打順に応じたplayerが入るようにしてループを削除する。
12
+ <% for num in 1..9 do %> を
13
+ <% @order.players.sort_by{|p| p.打順}.each do |p| %> 
14
+ にする。
15
+ ```
16
+ <% @order.players.sort_by{|p| p.打順}.each.with_index(1) do |p,num| %> 
17
+ <tr>
18
+ <td class="td-num">
19
+ <%= num %>
20
+ </td>
21
+ <td class="td-position">
22
+ <%= p.collection_select :position_id, Position.all, :id, :name, :include_blank => true %>
23
+ </td>
24
+ <td class="td-card">
25
+ <%= p.collection_select :card_id, Card.all.order(:image_front), :id, :name, :include_blank => true %>
26
+ </td>
27
+ </tr>
28
+ <% end %>
29
+ ```
30
+ ただschemaみたところ打順がない?
31
+ 及び、newのときに予め9つplayerを作っておかないと9行並ばないので入力できなくなります。
32
+ (1..9).each{|打順| @order.plaiers.build(打順: 打順)}
33
+
34
+ 打順 は適切な英単語に置き換えて下さい