【问题标题】:How do you change the displayed order of ActiveScaffold "actions"?如何更改 ActiveScaffold “动作”的显示顺序?
【发布时间】:2010-09-08 17:19:24
【问题描述】:

我在 Ruby on Rails 应用程序中使用 ActiveScaffold,并已将表格中的默认“操作”文本(即“编辑”、“删除”、“显示”)替换为使用 CSS 的图标。我还使用 action_link.add(“移动”和“复制”)添加了几个自定义操作。

为了清楚起见,我希望图标以不同的顺序显示。具体来说,我希望“编辑”成为显示的第一个图标。

我似乎可以通过更改控制器中的定义顺序来更改 action_links 的顺序。我还能够通过首先 config.actions.排除所有内容,然后使用 config.actions.add 以特定顺序添加它们来更改默认操作的顺序。

但是,我的自定义操作似乎总是出现在列表中默认操作之前

理想情况下,我希望它们显示“编辑”“复制”“移动”“删除”(即 - 内置、自定义、自定义、内置)。谁能建议我如何做到这一点?

我的一个想法是将“编辑”重新定义为自定义操作(使用默认功能),但我也不知道该怎么做。

【问题讨论】:

    标签: ruby-on-rails ruby activescaffold


    【解决方案1】:

    警告:我不知道 ActiveScaffold。这个答案是基于我阅读它的源代码。

    看起来action_links 变量是一个自定义数据结构,称为ActionLinks。它在ActiveScaffold::DataStructures 中定义。

    在内部,它有一个@set 变量,它根本不是Set,而是ArrayActionLinks 有一个 adddeleteeach 方法用作此 @set 变量的看门人。

    在显示链接时,ActiveScaffold 会这样做(在 _list_actions.rhtml 中):

    <% active_scaffold_config.action_links.each :record do |link| -%>
      # Displays the link (code removed for brevity)
    <% end -%>
    

    因此,除了扩展 ActiveScaffold::DataStructures::ActionLinks 以添加一种方法以不同方式对 @set 中的值进行排序之外,似乎没有办法做到这一点,至少一般情况下没有。

    如果我是你,我会添加一个名为 order_by! 的东西,你可以在其中传递一个符号数组,按照正确的顺序,它会使用 @set。这样,您可以在添加完自定义操作后调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多