【问题标题】:Form to sort an index in rails在rails中对索引进行排序的表单
【发布时间】:2010-04-19 12:27:54
【问题描述】:

我是 Rails 的新手。我想构建一个简单的表单来确定列表的排序顺序。 我已经实现了一个类似的表单 -

<%= radio_button_tag :sort, "rating" %>
  <%= label_tag :sort_rating, "order by rating" %>
<%= radio_button_tag :sort, "name" %>
  <%= label_tag :sort_name, "order by name" %>

现在我不确定如何在控制器/模型级别实现排序。我比较疑惑的方面是:

  • 应该在哪里进行排序
  • 排序参数如何持久化
  • 如何重用代码

现在,我什至无法让选定的排序方法在提交后保持选中状态。

如果能提供任何指导或参考示例,我将不胜感激。

【问题讨论】:

    标签: ruby-on-rails forms sorting


    【解决方案1】:

    应该在哪里进行排序

    在控制器中:

    order_by = "rating ASC" if params[:sort] == 'rating'
    ...
    @people = Person.all(:order => order_by)
    

    或者类似的东西。我不确定带有单选按钮的表单是如何传递的。

    排序参数如何持久化

    在视图中:

    <%= radio_button_tag :sort, "rating", params[:sort] == 'rating' ? true : false %>
    ...
    

    【讨论】:

    • 我是否必须为每个可能的值写一堆 order_by = ... if ...?我不能让单选按钮以某种方式映射到我想要排序的每个值吗?
    • 我认为,如果您将单选按钮的值完全设置为列的名称,那么您可以:order_by = ["? ASC", param[:sort]] in controller 而不是许多ifs。我使用了一个数组,因为这样param[:sort] 就被清理了。
    猜你喜欢
    • 2012-09-07
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2012-03-09
    • 2019-07-28
    相关资源
    最近更新 更多