Как изменить отображаемый порядок «действий» ActiveScaffold? - PullRequest
2 голосов
/ 12 сентября 2008

Я использую ActiveScaffold в приложении Ruby on Rails и заменил текст по умолчанию «действия» в таблице (т. Е. «Редактировать», «удалить», «показать») на иконки с использованием CSS. Я также добавил несколько пользовательских действий с помощью action_link.add («переместить» и «скопировать»).

Для ясности, Я бы хотел, чтобы значки отображались в другом порядке , чем они есть. В частности, я бы хотел, чтобы «edit» был первым отображаемым значком.

Мне кажется, что я могу изменить порядок ссылок action_link, изменив порядок определения в контроллере. Я также смог изменить порядок действий по умолчанию, сначала сконфигурировав config.actions.exex включая все, а затем добавив их в config.actions.add в определенном порядке.

Однако мои пользовательские действия всегда отображаются до действий по умолчанию в списке.

В идеале я хотел бы, чтобы они отображали «редактировать», «копировать», «перемещать», «удалять» (т. Е. - встроенные, пользовательские, пользовательские, встроенные). Кто-нибудь может подсказать, как мне это сделать?

У меня была идея переопределить «редактирование» как настраиваемое действие (с функциональностью по умолчанию), но я не знаю, как это сделать.

1 Ответ

1 голос
/ 13 сентября 2008

Предостережение: Я не знаю 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. Таким образом, вы можете позвонить после того, как добавите свои собственные действия.

...