管理エリアで特定のユーザーの請求の詳細を表示しようとしています。ユーザー ID をテキスト フィールドに入力して [送信] をクリックするだけで、その user_id に関連付けられた請求が下の表に表示されます。これまでの私の cac の努力は次のとおりです。
管理者/index.html.erb
<%= form_tag(:action => "show_billings") do %>
<div class="field">
<p>User ID</p>
<%= text_field_tag :user_id %>
</div>
<div class="actions">
<%= submit_tag "Show Billing For This User", :class => 'btn btn-success' %>
</div>
<% end %>
<table class="table table-hover table-striped table-bordered">
<thead style="background-color: #efefef">
<tr>
<th>Date</th>
<th>Description</th>
<th>Debits</th>
<th>Credits</th>
<th>Balance</th>
</tr>
</thead>
<tbody>
<% @billings.each do |billing| %>
<tr>
<td><%= billing.date %></td>
<td><%= billing.description %></td>
<td><%= number_to_currency(billing.debits) %></td>
<td><%= number_to_currency(billing.credits) %></td>
<td><%= number_to_currency(billing.balance) %></td>
</tr>
<% end %>
</tbody>
</table>
admin_controller.rb
def show_billings
billings = Billing.where(:user_id => params[:user_id])
if billings.nil?
@billings = Billing.where(:user_id => '22')
else
@billings = billings
end
end
次のエラーが発生するため、@billings を nil にしないようにしています。
undefined method `each' for nil:NilClass
def show_billings が必要かどうかはわかりませんが、まだ Rails にかなり慣れていないため、これまでに行ったことはすべて常に間違っているため、これもおそらくそうです。どうすれば修正できますか?