0

我只是在看关于可排序表列的 Ryan Bates railscast 教程,在他后来的一个视频(搜索、排序、使用 AJAX 分页)中进行了一些修改,该教程变成了 ajaxified。我认为他的解决方案效果很好,很干净而且很容易降解。

一个问题是他使用表格来实现排序功能,而我想使用选择输入来代替

目前我设置了两个选择框,一个用于列,另一个用于搜索方向,以及一个用于启动 ajax 请求的链接(请参见下面的屏幕截图)。

所需功能

然而,Ryan Bates 设置了它,所以他为每个可排序的列都有一个单独的链接,而我只会有一个链接。我想知道是否有人知道一种方法来推断他所拥有的并将参数与选择框上的值合并。

这是我迄今为止所拥有的......

<table>
        <tr>
            <th>Sort by</th>
            <th>Order</th>
        </tr>
        <tr>
            <td>
                <%= select_tag "sort", options_for_select([["Creation Date", "created_at"], ["File Name", "name"], ["Rating", "rating_average"], ["Downloads", "downloads"]]) %>
            </td>
            <td>
                <%= select_tag "direction", options_for_select([["Descending", "desc"], ["Ascending", "asc"]]) %>
            </td>
            <td>
            <%= link_to "Sort", params.merge(:sort => params[:sort], :direction => params[:direction], :page => nil), :class => "icon" %>           
            </td>
        </tr>
    </table>

如果可能的话,我不想将功能仅限于启用 JavaScript 的用户。

4

1 回答 1

1

AFAICS,来自 select-tags 的参数将以与任何其他参数几乎相同的方式通过 - 所以合并它们应该以相同的方式工作。唯一的区别是您需要传入params[:sort]选择标签。看看你如何在这里传递当前选定的值:

http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_for_select

这表明了一种格式:

<%= select_tag "sort", options_for_select([["Creation Date", "created_at"], ["File Name", "name"], ["Rating", "rating_average"], ["Downloads", "downloads"]], params[:sort]) %>
于 2012-07-17T23:48:57.553 回答