2011-10-09 12 views
10

ちょうど私のアプリにActiveAdminを追加すると、私は問題を/表示/編集/破壊アクションを使用して原因私のリンクIDを指していないが、ユーザーにとってより読みやすいように)。私が取得、その場合には http://localhost:3000/admin/users/paul/edit (where paul is the user name)どのようにカスタムActiveAdminすべてのアクションのIDの代わりにfind_by要求を使用

編集リンク:

ActiveAdminは正しくように私のリンクを作成し、もちろんポールの Couldn't find User with ID=paul

原因は、IDが、ユーザー名ではありません。

私のカスタムアプリケーションのように、すべてのアクションの表示/編集/削除のように、find_by_name(params [:id])を使用するカスタムActiveAdminを使用できますか。

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

ありがとうございます。

乾杯。これは、アプリ/管理/ user.rbで仕事をする

+0

チェックアウト、この関連の質問は、受け入れ答えはまた、あなたの問題を解決します:http://stackoverflow.com/questions/7684644/activerecordreadonlyrecord- when-using-active-adminadmin-and-friendly-id – rdvdijk

+0

私は今夜それを試してみます、それは効果的にto_paramコマンドのためです。私は試してみるとあなたに触れ続けます。 –

答えて

12

:あなたはこのrailscast続く場合

ActiveAdmin.register User do 
    before_filter :only => [:show, :edit, :update, :destroy] do 
     @user = User.find_by_name(params[:id]) 
     end 
end 
1

http://railscasts.com/episodes/63-model-name-in-url-revisedとしたカスタムルートを、あなたはactive_adminを修正することができますアプリ/管理/ user.rbでこれを置くことによってルート:

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

それはちょうどわずかに異なる、afiahによって示されているものには本当に近いです。

20

これを行うにクリーンな方法があります:

ActiveAdmin.register User do 
controller do 
    defaults :finder => :find_by_slug 
end 
end 
関連する問題