我在 Ruby on Rails 应用程序中使用 ActiveScaffold,并使用 CSS 将表格中的默认“操作”文本(即“编辑”、“删除”、“显示”)替换为图标。我还使用 action_link.add(“移动”和“复制”)添加了一些自定义操作。
为清楚起见,我希望图标以不同的顺序显示。具体来说,我希望“编辑”成为显示的第一个图标。
我似乎能够通过更改 Controller 中定义的顺序来更改 action_links 的顺序。我还能够通过首先 config.actions.excluding 一切,然后以特定顺序使用 config.actions.add 添加它们来更改默认操作的顺序。
但是,我的自定义操作似乎总是出现在列表中默认操作之前。
理想情况下,我希望它们显示“编辑”、“复制”、“移动”、“删除”(即内置、自定义、自定义、内置)。谁能建议我该怎么做?
我的一个想法是将“编辑”重新定义为自定义操作(具有默认功能),但我也不知道该怎么做。
最佳答案
警告:我不知道ActiveScaffold。这个答案是基于我阅读它的源代码。
看起来 action_links
变量是一个自定义数据结构,称为 ActionLinks
。它在 ActiveScaffold::DataStructures
中定义。
在内部,它有一个@set
变量,它根本不是一个Set
,而是一个Array
。 ActionLinks
有一个add
、delete
和each
方法作为这个@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
.这样,您就可以在添加完自定义操作后调用它。
关于ruby-on-rails - 如何更改 ActiveScaffold "actions"的显示顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59207/