0

我正在尝试在 Rails 应用程序中订购一张桌子(没有任何插件)。这个想法是从数据库中检索一个表并使用 3 个选择框对其进行排序。在我单击“订购”按钮并使用订购数据刷新页面后。

我正在尝试一些东西并得到这个代码:

def order
  @clients = Client.all(:order => 'parameter1, parameter2, parameter 3')
end

但是,我有两个问题:

  1. 如何将参数从<select>盒子传递到控制器的方法order
  2. 单击按钮时,如何调用此方法并使用有序数据刷新页面?
4

1 回答 1

0

我认为现在可以扩展呈现表格的相同控制器操作以处理传入的排序选项。例如,它可能是index控制器中的当前方法。

form_for因此,在您当前的页面中使用、select助手和一个submit重新调用的按钮构建一个表单index

params在控制器中,您可以使用Rails 为您设置的散列访问在选择框中选择的值。例如,如果您的排序参数是“height”、“age”和“gender”,在 select lists 中,sort1您可能有类似的代码sort2sort3

def index
  sort_list = []
  # assumes the value of the sort list is the column name
  sort_list << params[:sort1] if params[:sort1]
  sort_list << params[:sort2] if params[:sort2]
  sort_list << params[:sort3] if params[:sort3]
  if sort_list.blank?
    @clients = Client.all
  else
    @clients = Client.all(:order => sort_list.join(", "))
  end
  ...
end

我知道你说过你不想要一个插件(gem),但我不得不提到一个很棒的插件,它甚至可以用于非常复杂的排序(和过滤),称为ransack

于 2012-10-18T01:34:26.003 回答