私の見解はこれを持っています:
%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。