0

Railsアプリで(プラグインなしで)テーブルを注文しようとしています。アイデアは、データベースからテーブルを取得し、3つの選択ボックスでそれを注文することです。「注文」ボタンをクリックした後、注文したデータでページを更新します。

私は何かを試し、このコードを取得しています:

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

しかし、私には2つの質問があります。

  1. <select>ボックスからコントローラーのメソッドにパラメーターを渡すにはどうすればよいorderですか?
  2. ボタンをクリックしたときに、このメソッドを呼び出して、順序付けられたデータでページを更新するにはどうすればよいですか?
4

1 に答える 1

0

テーブルをレンダリングするのと同じコントローラーアクションを拡張して、着信ソートオプションを処理できると思います。たとえば、indexコントローラの現在のメソッドである可能性があります。

したがって、ヘルパーとを呼び出すボタンを使用して、現在のページ内にフォームをform_for作成selectsubmitますindex

paramsコントローラ内では、Railsが設定したハッシュを使用して、選択ボックスで選択した値にアクセスできます。たとえば、選択リストsort1で並べ替えパラメータが「身長」、「年齢」、「性別」の場合、次のようなコードが含まれている可能性がsort2あります。sort3

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 に答える