如何更改ActiveScaffold“操作”的显示顺序?

时间:2008-09-12 15:03:26

标签: ruby-on-rails ruby activescaffold

我在Ruby on Rails应用程序中使用ActiveScaffold,并使用CSS替换了表格中的默认“操作”文本(即“编辑”,“删除”,“显示”)。我还在action_link.add(“move”和“copy”)中添加了一些自定义操作。

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

我似乎可以通过更改控制器中的定义顺序来更改action_links的顺序。我还能够通过第一个config.actions.excluding所有内容来更改默认操作的顺序,然后按特定顺序将它们与config.actions.add一起添加。

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

理想情况下,我希望他们显示“编辑”“复制”“移动”“删除”(即 - 内置,自定义,自定义,内置)。谁能建议我怎么做?

我的一个想法是将“编辑”重新定义为自定义操作(使用默认功能),但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分: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。这样,您可以在添加完自定义操作后调用它。