11

ActiveAdminをアプリに追加しているところですが、show / edit / destroyアクションの使用で問題が発生しました。これは、リンクがIDではなくユーザー名を指しているためです(ユーザーが読みやすくするため)。

ActiveAdminは、次のようなリンクを正しく作成します。

リンクの編集: http://localhost:3000/admin/users/paul/edit (where paul is the user name)

その場合、私は次のようになります。

ID=paulのユーザーが見つかりませんでした

もちろん、PaulはIDではなくユーザー名です。

すべてのアクションshow/edit / deleteに対して、アプリケーションのようにfind_by_name(params [:id])を使用するようにActiveAdminをカスタム化するにはどうすればよいですか?

他のモデルでは、生成されたソルトIDであるいわゆる「SID」を取得しました。他のモデルにもfind_by_sid(params [:id])を使用したいと思います。

4

3 に答える 3

25

これを行うには、よりクリーンな方法があります。

ActiveAdmin.register User do
 controller do
  defaults :finder => :find_by_slug
 end
end
于 2013-06-20T23:31:38.087 に答える
13

これにより、app / admin/user.rbでジョブが実行されます。

ActiveAdmin.register User do
    before_filter :only => [:show, :edit, :update, :destroy] do
        @user = User.find_by_name(params[:id])
      end
end
于 2011-10-10T19:46:04.053 に答える
1

次の railscast: http://railscasts.com/episodes/63-model-name-in-url-revisedに従い、カスタム ルートがある場合は、これを app/admin/user.rb に配置することで、active_admin ルートを修正できます。 :

before_filter :only => [:show, :edit, :update, :destroy] do
  @user = User.find_by_slug!(params[:id])
end

afiah で示したものに非常に近いですが、わずかに異なります。

于 2013-03-12T03:59:42.510 に答える