我的观点是这样的:
%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]
但它也失败了。
我无法重现该错误,但您将 HTML 选项代替 URL 选项传递给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
是链接的表头,所以我放了两个解决方案!作为示例,您可以克隆此应用程序并在/movies
.