- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 jquery-datatables-rails 来呈现索引的一些信息,并在 this 之后添加了过滤器。然而,数据表似乎忽略了过滤器,并且它们没有显示为 get 请求中请求的 json 的一部分。
我已经附上了我的索引方法、数据表类、我的索引 View 和我正在运行的 CoffeeScript 。
索引方法
def index
@sbcons = Subcontractor.scoped
if filters = params[:filter]
@sbcons = @sbcons.where(sbcon_type: filters[:type]) unless filters[:type].blank?
@sbcons = @sbcons.where(cscs_card: filters[:cscs]) unless filters[:cscs].blank?
@sbcons = @sbcons.where(approved_status: filters[:approved]) unless filters[:approved].blank?
end
respond_to do |format|
format.html
format.json do
render json: SubcontractorsDatatable.new(view_context, @sbcons)
end
end
end
索引 View
<% provide(:title, 'All Subcontractors') %>
<h1>Subcontractors List</h1>
<div class="filter">
<%= form_tag(method: :get, id: "filter_form") do %>
<%= label_tag :sbcon_type, "Type" %>
<%= select_tag "filter[type]", options_for_select([[],["Labour Only"], ["Specialist"], ["Both"]]) %>
<%= label_tag :cscs_card, "CSCS" %>
<%= select_tag "filter[cscs]", options_for_select([[],["Yes"], ["No"]]) %>
<%= label_tag :approved_status, "Approved Status" %>
<%= select_tag "filter[approved]", options_for_select([[],["Approved"], ["Not Approved"]]) %> <br>
<%= link_to "Filter", '#', id: "filterbutton", class: "btn btn-mini" %>
<% end %>
<br>
</div>
<table id="subcontractors" class="table table-condensed table-hover display" data-source="<%= subcontractors_url(format: "json") %>">
<thead>
<tr>
<th>Name</th>
<th>Contact Number</th>
<th>CSCS</th>
<th>Type</th>
<th>Scotland</th>
<th>NE England</th>
<th>NW England</th>
<th>Midlands</th>
<th>SE England</th>
<th>SW England</th>
<th>London</th>
<th>Wales</th>
<th>Operatives</th>
<th>Product Liability</th>
<th>Employer Liability</th>
<th>Public Liability</th>
<th>Contractors All Risk</th>
<th>Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<%= javascript_tag do %>
$('#filterbutton').click(function (){
$('#subcontractors').dataTable().fnDraw();
});
<% end %>
数据表类
class SubcontractorsDatatable
delegate :params, :h, :link_to, to: :@view
def initialize(view, sbcons)
@view = view
@sbcons = sbcons
end
def as_json(option = {})
{
sEcho: params[:sEcho].to_i,
iTotalRecords: Subcontractor.count,
iTotalDisplayRecords: subcontractors.total_entries,
aaData: data
}
end
private
def data
subcontractors.map do |subcontractor|
[
link_to(subcontractor.sbcon_name, subcontractor),
h(subcontractor.con_tel_num),
h(subcontractor.cscs_card),
h(subcontractor.sbcon_type),
h(subcontractor.scot),
h(subcontractor.ne_eng),
h(subcontractor.nw_eng),
h(subcontractor.mid),
h(subcontractor.se_eng),
h(subcontractor.sw_eng),
h(subcontractor.ldn),
h(subcontractor.wales),
h(subcontractor.op_avail),
h(subcontractor.ins_prod),
h(subcontractor.ins_emp),
h(subcontractor.ins_pub),
h(subcontractor.ins_con_all),
h(subcontractor.approved_status)
]
end
end
def subcontractors
@subcontractors ||= fetch_subcontractors
end
def fetch_subcontractors
subcontractors = Subcontractor.order("#{sort_column} #{sort_direction}")
subcontractors = subcontractors.page(page).per_page(per_page)
if params[:sSearch].present?
subcontractors = subcontractors.where("sbcon_name like :search or con_tel_num like :search", search: "%#{params[:sSearch]}%")
end
subcontractors
end
def page
params[:iDisplayStart].to_i/per_page + 1
end
def per_page
params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
end
def sort_column
columns = %w[sbcon_name con_tel_num cscs_card sbcon_type scot ne_eng nw_eng mid se_eng sw_eng lon wales op_avail ins_prod ins_emp ins_pub ins_con_all approved_status]
columns[params[:iSortCol_0].to_i]
end
def sort_direction
params[:sSortDir_0] == "desc" ? "desc" : "asc"
end
end
CoffeeScript
jQuery ->
$('#subcontractors').dataTable
sPaginationType: "bootstrap"
sdom: "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>"
bProcessing: true
bServerSide: true
sAjaxSource: $('#subcontractors').data('source')
fnServerParams: (aoData) ->
for form_element in $('#filter_form').serializeArray()
aoData.push
name: form_element.name
value: form_element.value
最佳答案
根据 Abram 的建议,我查看了 if 过滤器部分,发现它从未被调用。我通过修改 form_tag 解决了这个问题,如下所示:
<%= form_tag('#', method: :get, id: "filter_form") do %>
从这里我发现过滤器被通过但被忽略。 Abram 建议将逻辑移至 datatables 类中的 fetch_subcontractors 方法,并同时更改 initalize 方法以反射(reflect)这一点
def initialize(view, subcontractors)
@view = view
end
def fetch_subcontractors
subcontractors = Subcontractor.order("#{sort_column} #{sort_direction}")
subcontractors = subcontractors.page(page).per_page(per_page)
if params[:sSearch].present?
subcontractors = subcontractors.where("sbcon_name like :search or con_tel_num like :search", search: "%#{params[:sSearch]}%")
end
if filters = params[:filter]
binding.pry
subcontractors = subcontractors.where(sbcon_type: filters[:type]) unless filters[:type].blank?
subcontractors = subcontractors.where(cscs_card: filters[:cscs]) unless filters[:cscs].blank?
subcontractors = subcontractors.where(approved: filters[:approved]) unless filters[:approved].blank?
end
subcontractors
end
通过这些更正,过滤器可以正常工作并显示正确的结果。
关于javascript - jquery-datatables-rails 中忽略过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16979890/
我有一个对象数组,我想在键传入“filter”过滤器时提取值。下面是我尝试过的 Controller 代码片段,但我得到的响应类型未定义。请帮我找出哪里出错了。 var states = [{"HI
如果任何 J2EE 应用程序直接访问 servlet,然后 servlet 将相同的请求转发到某个 .jsp 页面。 request.getRequestDispatcher("Login.jsp")
我有一个带有图像缩略图的表单,可以通过复选框进行选择以进行下载。我想要一个包含 jQuery 中图像的数组,用于 Ajax 调用。 2个问题: - 表格顶部有一个复选框,用于切换我想要从映射中排除的所
我必须从服务器转储数据库,将 .sql 传输到另一台服务器,然后运行以下脚本以使用此语法删除某些行: DELETE wp_posts FROM wp_posts INNER JOIN wp_postm
我想从目录中过滤掉特定类型的文件,但收到错误“ token 语法错误,删除这些 token ”: File dir = new File("c:/etc/etc"); File[] f
几乎所有的 Web 应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,您能够确保应用程序获得正确的输入类型。 您应该始终对外部数据进行过滤! 输
我正在开发一个由 OData 服务提供支持的搜索功能。它将返回一个或一列标题对象作为结果。我们需要搜索的许多字段不在标题对象中。它们仅在子对象(导航属性)中。能够针对子字段执行 OData 搜索并仍然
假设我有以下模型,它有一个方法 variants(): class Example(models.Model): text = models.CharField(max_length=255)
我有一个默认的列表列表,但我基本上想这样做: myDefaultDict = filter(lambda k: len(k)>1, myDefaultDict) 除了它似乎只适用于列表。我能做什么?
我正在使用 django-filter 来输出我的模型的过滤结果。那里没有问题。下一步是添加一个分页器……尽管现在已经苦苦挣扎了好几天。 views.py: def funds_overview(re
我正在做一个概念证明,我正在试验一种奇怪的行为。 我有一个按日期字段按范围分区的表,如果我设置固定日期或由 SYSDATE 创建的日期,查询的成本会发生很大变化。 这些是解释计划: SQL> SELE
如果一个或另一个值匹配,是否可以制作一个过滤器,例如一个中性的 PropertyFilter(并传递给链中的下一个过滤器)?就像是: value1 val
我是 VBA 初学者,正在尝试根据单元格值过滤数据,经过一番谷歌搜索后,我编写了一个有效的代码 Sub FilterDepartment_Sales() Sheet6.Activate
假设我在 excel 数据透视表中有两个过滤器。 两者最初都会显示筛选列的选定范围内的所有值。 当我仅在过滤器 1 中选择几个值时,过滤器 2 仍会继续显示基础数据中所选范围内特定过滤器列中的所有值。
是否可以定义自定义 build-ins (名称不再适合)在 ftl? 由于语义前提,我不想让它成为一个函数,而是一个内置的。 最佳答案 这是不可能的,?语法是为内置函数保留的。 (顺便说一句,这意味着
我试图在 Edit | 之外添加一个链接通过插件删除wordpress管理员>用户>所有用户列表中的链接..这是我第一次尝试通过查看其他插件或搜索google来制作wordpress插件.. 我添加了
我正在尝试按照以下教程使用 django 过滤器进行分页,但该教程似乎缺少某些内容,而且我无法使用基于函数的 View 方法显示分页。 https://simpleisbetterthancomple
由于我是 Powershell 新手,因此寻求最佳实践方面的帮助, 我有一个 csv 文件,我想过滤掉 csv 中的每一行,除了包含“未安装”的行 然后,我想根据包含计算机列表的单独 csv 文件过滤
我正在尝试创建一个搜索查询,它会告诉我我作为审阅者添加到其中的打开更改,但我还没有提交最新补丁集的代码审查。这应该包括其他人已经评论过的更改,但我没有。 我能找到的最接近的是 is:reviewer
在我的 Web 应用程序中,我有 3 个主要部分 1. 客户 2. 供应商 3. 管理员 我正在使用 java session 过滤器来检查用户 session 并允许访问网站的特定部分。 因此客户只
我是一名优秀的程序员,十分优秀!