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

我无法重现该错误,但您将 HTML 选项代替 URL 选项传递给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 参数sort。因为我没有意识到是否id是链接的表头,所以我放了两个解决方案!作为示例,您可以克隆此应用程序并在/movies.

于 2012-08-07T13:53:16.890 回答