配列の各値をスキャンし、いずれかのフィールドの値に基づいて処理を行う必要があります。以下は私のコントローラークラスのコードです
def index
@tables = Table.select("tablabel,tabposition").where(:tabstatus => "displayed")
if @tables
@tables.each do |table|
if (table.tabposition == "position1")
@orders1 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname").where(:tableno => table.tablabel)
Table.where(:tablabel => "Table"+@orders1.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position1')
else if (table.tabposition == "position2")
@orders2 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname").where(:tableno => table.tablabel)
Table.where(:tablabel => "Table"+@orders2.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position2')
else if (table.tabposition == "position3")
@orders3 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname").where(:tableno => table.tablabel)
Table.where(:tablabel => "Table"+@orders3.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position3')
else if (table.tabposition == "position4")
@orders4 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname").where(:tableno => table.tablabel)
Table.where(:tablabel => "Table"+@orders4.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position4')
else if (table.tabposition == "position5")
@orders5 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname").where(:tableno => table.tablabel)
Table.where(:tablabel => "Table"+@orders5.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position5')
else if (table.tabposition == "position6")
@orders6 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname").where(:tableno => table.tablabel)
Table.where(:tablabel => "Table"+@orders6.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position6')
end
end
end
end
end
end
end
else
@orders1 = List.select("itemname,tableno,SUM(quantity) as quantity").group("itemname")
Table.where(:tablabel => "Table"+@orders1.first.tableno).update_all(:tabstatus => 'displayed',:tabposition => 'position1')
end
end
end
@tables の値を取得しています
=> [#<Table tablabel: "Table03", tabposition: nil>, #<Table tablabel: "Table06",
tabposition: nil>, #<Table tablabel: "Table07", tabposition: nil>, #<Table tabl
abel: "Table08", tabposition: nil>, #<Table tablabel: "Table09", tabposition: ni
l>, #<Table tablabel: "Table10", tabposition: nil>]
tabposition
ここで、フェッチされた各行のフィールドをチェックし、その後処理を行う必要があります。エラーが発生しています。undefined method tableno for nil:NilClass
最初の If ステートメント内。理想的には、最初の IF に入るべきではありません。table.tabposition 値を取得していないようです。
これが基本的な質問に聞こえる場合は、心からお詫び申し上げます。私はレールの初心者で、多くのチュートリアルを読み、たくさん閲覧しました (さまざまなオプションを試しました) が、まだ運がありません。アドバイスください。ありがとうございます。