我正在尝试在我的应用程序中实现meta_search gem来过滤计费表中的各个字段:
class PeriodBillingsController < ApplicationController
def index
@sla = Sla.find(params[:sla_id])
@search = PeriodBilling.latest_billing.search(params[:search])
@period_billings = @search.order("we_date desc").where("sla_id = ?", @sla.id)
end
end
观点:
<%= form_for @search do |f| %>
<%= f.label :pe_number_eq, "Period #" %>
<%= select("period_billing", "pe_number", (1..12), {:include_blank => true}) %>
<%= f.label :appcode_eq, "Appcode" %>
<%= collection_select( "period_billing", "appcode_id", Appcode.where("sla_id = ?", @sla.id), :id, :appcode, :include_blank => true ) %>
<%= f.label :dpc_employee_eq, "Named Resource" %>
<%= collection_select( "period_billing", "dpc_employee_id", DpcEmployee.all, :id, :fullname, :include_blank => true ) %>
<%= f.submit "Filter Records" %>
<% end %>
当我点击选择其中一个过滤器时,出现错误:
无法找到没有ID的Sla。
我假设是因为我的@ sla.id param没有被带到@search,但我不知道我做错了什么。请帮助一个正在努力解决的贫穷,过度劳累的女孩。 ;)
提前感谢任何建议。
答案 0 :(得分:0)
我相信它很缺失:调用index时的sla_id参数。
答案 1 :(得分:0)
这一行
@sla = Sla.find(params[:sla_id])
应该看起来像
@search = Sla.serch(params[:search])
因为我假设您正在使用索引操作来显示sla的所有记录
但是显示你正在使用params:id
@sla = Sla.find(params[:id])
可能这是一个迟到的回应,但也许会有人遇到同样的问题。