私の見解はこれを持っています:
%tr
%th =link_to 'Name', :sort =>'name', :id => 'name_header'
ビューのコントローラーメソッドには次のものがあります。
@students = Student.order(params[:sort]).all
列ヘッダーをクリックして並べ替えようとしています。同様に、params[:id]
代わりに試しましparams[:sort]
たが、失敗しました。
私の見解はこれを持っています:
%tr
%th =link_to 'Name', :sort =>'name', :id => 'name_header'
ビューのコントローラーメソッドには次のものがあります。
@students = Student.order(params[:sort]).all
列ヘッダーをクリックして並べ替えようとしています。同様に、params[:id]
代わりに試しましparams[:sort]
たが、失敗しました。
そのエラーを再現することはできませんが、URLオプションの代わりにHTMLオプションをlink_toに渡しています。これで修正される可能性があります。
%th= link_to 'Name', '#', :sort =>'name', :id => 'name_header'
また、
%th= link_to
ではなく
%th =link_to
Studentに列名があることを確認してください。find_all
これにより、パラメータにキーを持つ値で並べ替えられたようなすべての学生が検索されますsort
。になることを期待しています"name"
。
@students = Student.find(:all, :order => 'name') if params[:sort]=='name'
そして、.hamlにはid
、アンカータグにを割り当てます。
%tr
%th= link_to "Name", params.merge(:sort => 'name'), :id => 'name_header'
id
または、をテーブルヘッダーに割り当てます。
%tr
%th{:id => 'name_header'}= link_to "Name", params.merge(:sort => 'name')
.merge ()を使用すると、古いパラメーターを保持し、リンクがクリックされた場合は、GETパラメーターを追加しますsort
。id
リンクのテーブルヘッダー用かどうかわからなかったので、2つの解決策を入れました!例として、このアプリのクローンを作成して、で見ることができます/movies
。