1

私の見解はこれを持っています:

%tr
   %th =link_to 'Name', :sort =>'name', :id => 'name_header'

ビューのコントローラーメソッドには次のものがあります。

@students = Student.order(params[:sort]).all

列ヘッダーをクリックして並べ替えようとしています。同様に、params[:id]代わりに試しましparams[:sort]たが、失敗しました。

4

2 に答える 2

2

そのエラーを再現することはできませんが、URLオプションの代わりにHTMLオプションをlink_toに渡しています。これで修正される可能性があります。

%th= link_to 'Name', '#', :sort =>'name', :id => 'name_header'

また、

  %th= link_to

ではなく

  %th =link_to
于 2012-08-07T13:42:14.027 に答える
2

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パラメーターを追加しますsortidリンクのテーブルヘッダー用かどうかわからなかったので、2つの解決策を入れました!として、このアプリのクローンを作成して、で見ることができます/movies

于 2012-08-07T13:53:16.890 に答える