【问题标题】:How to set a default value for select_tag in Rails and ensure the default value reloads on page refresh如何在 Rails 中为 select_tag 设置默认值并确保在页面刷新时重新加载默认值
【发布时间】:2012-08-05 15:17:40
【问题描述】:

背景

我有一个视图页面 (abc.html.haml),其中包含 2 个下拉选项 A 和 B。A、B 是包含一组记录的列表,我通过 UI 展示其部分。

默认情况下,在点击控制器#index 操作(通过浏览器 url 调用)时,页面会填充 A 列表中的记录。

然后我有一个 Ajax 调用,它在选择下拉菜单时使用列表 B 中的记录填充同一页面。假设我现在使用下拉选项从状态 A 移动到 B。

问题

曾经,我在页面中填充了列表 B 中的记录,现在,页面刷新,我的下拉菜单仍然保持相同的状态“B”,但是在页面刷新时从控制器#action 加载的默认记录集来自列表 A(因此下拉菜单的状态应为“A”)。

关于如何解决这个问题的任何意见?

谢谢。

【问题讨论】:

    标签: ruby-on-rails jquery drop-down-menu refresh default-value


    【解决方案1】:

    我不确定我是否完全理解您的问题,但我能想到几个选项:

    • 在下拉菜单中进行选择时,使用 javascript 更改 URL。您可以将参数添加到可以反映下拉列表状态的 URL,然后您可以在页面加载时解析这些参数。

    • 给用户一个您控制的刷新按钮,然后您可以在刷新时将信息发送回控制器,以便您加载正确的默认值。

    • 在用户进行选择时,通过 ajax 调用将当前用户选择存储在数据库中。我不知道您的应用程序的上下文,所以我不知道这有多可行。如果它们存在,那么您显然可以在页面加载时加载它们。

    然而,最简单的选择是重置页面刷新时的所有控件,我认为用户无论如何都希望这种行为。

    【讨论】:

    • 感谢您的意见。我正在通过 Jquery 进行 Ajax 调用,同时也适当地传递了参数。页面视图根据传递的参数进行过滤。通常用户会刷新浏览器,如何将 select_tag 重置为页面刷新时的默认值,以使用“不”以相同操作名称命名的视图文件?对不起,我意识到我错过了提到 controller#action 实际上呈现另一个视图文件,而不是按照正常的 Rails 约定的 action.html.haml。可能这是导致异常行为的原因。
    猜你喜欢
    • 2013-04-07
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多