【问题标题】:Rails Applying Filters to viewsRails 将过滤器应用于视图
【发布时间】:2013-08-06 12:56:46
【问题描述】:

在 Rails 中创建过滤器的最佳方法是什么。所以基本上我有一个带有行和列的html表,其中列出了很多信息。现在我想按日期、名称、升序、降序等对该表进行排序......

我不希望使用 javascript 来实现这一点,如果可能的话,我宁愿它使用 ruby​​ 代码。实现这一目标的最佳方法是什么?如果这不是一个好方法,我不必使用桌子。另外,通过使用代码,这是否意味着每次我希望应用过滤器时都必须刷​​新页面,或者可以在不刷新页面的情况下完成,是否可以即时完成?

【问题讨论】:

    标签: ruby-on-rails filter


    【解决方案1】:

    假设您有一个表格或一个要按姓名过滤的人员列表,

    1. 在您的 person.rb 模型中包含一个 :name 范围,如下所示:

      scope :name, lambda{|name| where('name = ?', name )}

    2. persons_controller.rb 或您希望按姓名过滤人员的任何其他控制器中,在顶部添加 has_scope :name

    3. 在视图上传递:name 参数以获取过滤后的结果,如下所示:

    <%= link_to 'filtered_name', {controller: 'persons', action: 'index', :name => 'the_name'} %>

    您可以类似地为升序和降序应用过滤器。

    【讨论】:

    • 我从未使用过范围和 lambda。您是否知道有关如何完成此操作的任何编写良好的初学者指南?我对 ruby​​ 和 rails 很陌生。你的解释很好,我只需要更深入地解释一下这是如何工作的。
    • 更多关于范围和过滤justinweiss.com/articles/…
    • 在视图中...最后在 :name => 'the_name' 上发生了什么。是 :name 实际的范围名称吗?还是路线?
    • @SurgePedroza :name => 'the_name' 是一个查询参数,生成的 url 将类似于 http://localhost:3000/persons?name=the_name,这将获取名称为 'the_name' 的 person 记录。
    【解决方案2】:

    您可以使用 Filterrific gem。您可以在此处查看现场演示:

    http://filterrific.clearcove.ca/

    【讨论】:

    • 非常好 - 正在寻找这样的东西!
    【解决方案3】:

    以下是关于您正在寻找的内容的精彩直播: http://railscasts.com/episodes/240-search-sort-paginate-with-ajax

    它向您展示了使用和不使用 javascript。

    如果您想在不刷新页面的情况下应用过滤器,则意味着您需要使用Javascript。

    【讨论】:

    • 不幸的是,我在那个页面上迷路了。据我了解,该示例使用 jQuery,如果我在浏览器中禁用 JavaScript,那么 jQuery 也将无法工作。我需要能够在禁用 jQuery 的浏览器中运行过滤器。
    • 观看视频跟随他的解释。他首先展示了如何逐步过滤没有 Javascript 的表格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多