ruby on rails-试图在表中显示特定user_id的结果



我正试图在我的管理区域中显示特定用户的计费详细信息。我只想在文本字段中输入一个用户id,然后按submit,链接到该用户id的账单将显示在下表中。以下是我迄今为止的笨拙努力:

admin/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不为零:

undefined method `each' for nil:NilClass

我不知道def-show_billings是否是必要的,对rails来说还是很新的,而且我所做的一切都是错误的,所以这可能也是,我该如何解决它?

嗯,您从index操作中调用show_billings吗?您向我们展示了在index操作之后渲染的index.html.erb。该表单确实发布到show_billings,但通常会呈现show_billing.html.erb

因此,或者,在index.html.erb中编写类似@billings = []的内容,这样就不会出现错误,并让show_billings呈现与索引相同的视图。但是,我甚至不认为真正需要单独的操作:让搜索表单再次进入索引?无论如何,它都是相同的代码。

def show_billings
    if params[:user_id]
      @billings = Billing.where(:user_id => params[:user_id])
    else
      @billings = Billing.where(:user_id => '22')
end

让我知道你进展如何。

相关内容

  • 没有找到相关文章

最新更新