我的看法有這樣的:Haml的語法錯誤>不法分子class和id必須具有價值
%tr
%th =link_to 'Name', :sort =>'name', :id => 'name_header'
的觀點
我的控制器方法具有這樣的:
@students = Student.order(params[:sort]).all
我想通過點擊排序在列標題上。 同樣,我嘗試params[:id]
而不是params[:sort]
,但它也失敗了。
我的看法有這樣的:Haml的語法錯誤>不法分子class和id必須具有價值
%tr
%th =link_to 'Name', :sort =>'name', :id => 'name_header'
的觀點
我的控制器方法具有這樣的:
@students = Student.order(params[:sort]).all
我想通過點擊排序在列標題上。 同樣,我嘗試params[:id]
而不是params[:sort]
,但它也失敗了。
確保學生有列名。這會發現所有的學生,如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
是用於鏈接的表頭,我把這兩個解決方案!作爲EXAMPLE,你可以克隆這個應用程序,並在/movies
看到。
我無法重現該錯誤,但是您將HTML選項代替URL選項傳遞至link_to。這可能會解決這個問題:
%th= link_to 'Name', '#', :sort =>'name', :id => 'name_header'
還要注意,它應該是
%th= link_to
,而不是
%th =link_to
在電影的EXAMPLE中,什麼是movies_path(:sort => ...)?這是一個函數,排序是參數?功能定義在哪裏? – Selvam 2012-08-08 06:22:23
請看[Rails Routing from Outside In]中的2.2和2.3部分(http://guides.rubyonrails.org/routing.html) – 2012-08-08 13:51:36
感謝Waldyr.ar獲取鏈接。 – Selvam 2012-08-09 10:35:11