2

Ruby on Rails アプリで ActiveScaffold を使用しており、テーブル内のデフォルトの「アクション」テキスト (つまり、「編集」、「削除」、「表示」) を CSS を使用したアイコンに置き換えました。また、action_link.add (「移動」と「コピー」) を使用していくつかのカスタム アクションを追加しました。

わかりやすくするために、アイコンを実際とは異なる順序で表示したいと思います。具体的には、「編集」を最初に表示されるアイコンにしたいです。

コントローラーの定義の順番を変えることでaction_linksの順番を変えることができるようです。最初にすべてを config.actions.except し、次に config.actions.add を使用して特定の順序で追加することで、デフォルト アクションの順序を変更することもできました。

ただし、私のカスタム アクションは常に、リスト内の既定のアクションのに表示されるようです。

理想的には、「編集」「コピー」「移動」「削除」(つまり、ビルトイン、カスタム、カスタム、ビルトイン) を表示してほしいと思います。誰かが私がこれを行う方法を提案できますか?

私が持っていた 1 つのアイデアは、「編集」をカスタム アクションとして (既定の機能を使用して) 再定義することでしたが、これについてもどうすればよいかわかりません。

4

1 に答える 1

1

警告:私はActiveScaffoldを知りません。この答えは、私がそのソースコードを読んだことに基づいています。

action_links変数は、 と呼ばれるカスタム データ構造のようですActionLinks。で定義されていActiveScaffold::DataStructuresます。

内部的には@set変数を持っていますが、これは ではなくSetですArrayActionLinksには、この変数のゲートキーパーとして機能するadddelete、および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。そうすれば、カスタム アクションの追加が完了した後に呼び出すことができます。

于 2008-09-13T18:20:28.310 に答える