【问题标题】:Rails Merge params with selectRails 使用选择合并参数
【发布时间】:2012-07-17 23:42:42
【问题描述】:

我只是在看 Sortable Table Columns 上的 Ryan Bates railscast 教程,在他后来的一个视频 (Search, Sort, Paginate with 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 的用户。

【问题讨论】:

  • 代码在哪里掉下来了?
  • 为两个 select_tags 选择的值实际上并没有与 link_to 一起传递,可能是因为这些值是在运行时设置的,并且链接是在服务器端生成的?

标签: ajax ruby-on-rails-3 railscasts html-select


【解决方案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]) %>

【讨论】:

  • 您好,我附加了建议的参数 [:sort],但没有骰子。我相信这是因为这实际上并没有被设置。
  • 当您点击“排序”时 - 哪些参数会发送到您的控制器?
  • 只是我的身份验证令牌、控制器名称和操作名称。
  • 啊...您实际上并没有将您的 select_tags 放在“form_tag”中...这样做,并将“link_to”更改为普通的提交按钮,您应该很好去。
  • 啊,也许我试图完成一些过于优雅的事情。看到我在看这个网站Skyrim Nexusmods 并注意到他们正在做的几乎正是我想要完成的事情,但他们没有使用表格。仔细看,我发现他们正在使用 Javascript,这正是我不想要的。我会接受表格的。
猜你喜欢
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多