Rails_admin は非常に優れていますが、多くの場合、一部の人が望むものには多すぎます。独自の管理セクションを作成するのは非常に簡単です。
Rails 3.2 で独自の RESTful 管理セクションを作成する方法
名前空間を使用してネストされたリソースを含む、すべてのモデルの CRUD を使用して独自の管理セクションを作成します。
例 - ブログの管理セクション - モデル: 投稿、コメント (投稿のネストされたリソース)
基本的なブログ アプリが開発されていることを前提としています。これらすべての設定方法については、http: //guides.rubyonrails.org/getting_started.htmlを参照してください。
最初のステップ - 管理セクションとコントローラーを作成する
rails g controller admin/admin
これにより、すべての管理コントローラーが継承される空のコントローラーが生成されます。また、ダッシュボードとして機能する views/admin/admin/index.html.erb も作成します。
管理コントローラーを作成する
rails g controller admin/posts
rails g controller admin/comments
これにより、空の Admin::PostsController と Admin::CommentsController が admin 名前空間に生成されます
ステップ 2 - 管理コントローラーの名前空間を追加する config/routes.rb に移動し、以下を追加します。
namespace :admin do
root to: "admin#index"
resources :posts do
resources :comments, :only => [:create, :destroy]
end
end
ステップ 3 - admin ビューとコントローラー ファイルを編集して、admin 名前空間で動作するようにする これですべてが生成されました。フロントエンドではなく、admin コントローラーで動作させる必要があるだけです。
すべての Admin::*Controller の継承を変更します。
class Admin::PostsController < ApplicationController => class Admin::PostsController < Admin::AdminController
と
class Admin::CommentsController < ApplicationController => class Admin::CommentsController < Admin::AdminController
すべてのテンプレートを app/views/posts から app/views/admin/posts にコピーします すべてのテンプレートを app/views/comments から app/views/admin/comments にコピーします すべての関数を posts_controller.rb から admin/posts_controller.rb にコピーします すべての関数をコピーしますcomments_controller.rb から admin/comments_controller.rb へ
Admin CRUD を制御したいモデルごとに、views/admin/admin/index.html.erb へのリンクを追加します。例えばポスト。
<%= link_to "Posts", admin_posts_path %>
admin/posts_controller.rb を編集します。admin ネームスペースで動作するように 3 つの redirect_to 呼び出しを変更します。メソッドの作成と更新:
redirect_to @post => redirect_to [:admin, @post]
破棄方法:
redirect_to posts_url => redirect_to admin_posts_url
すべてのテンプレートに同様の変更を加えて、管理名前空間内で機能するようにします。次の変更を行う必要があります。
投稿/ _form.html.erb:
form_for(@post) => form_for([:admin, @post])
post/ edit.html.erb、index.html.erb、new.html.erb & show.html.erb は、次のすべてのインスタンスを検索します。
<%= link_to ‘Show’, @post %> => <%= link_to ‘Show’, [:admin, @post] %>
posts_path => admin_posts_path
edit_post_path(@post) => edit_admin_post_path(@post)
new_post_path => new_admin_post_path
<%= render "comments/form" %> => <%= render "admin/comments/form" %>
コメント/_comment.html.erb
<%= link_to 'Destroy Comment', [comment.post, comment],... => <%= link_to 'Destroy Comment', [:admin, comment.post, comment],...
コメント/ _form.html.erb 変更:
<%= form_for([@post, @post.comments.build]) do |f| %>=> <%= form_for([:admin, @post, @post.comments.build]) do |f| %>
それで全部です。これで、/admin/posts へのリンクと利用可能な CRUD アクションを含む /admin ダッシュボードが作成されます。
http://icebergist.com/posts/restful-admin-namespaced-controller-using-scaffoldingに声をかけてください。彼の 2008 年の解決策は依然として非常に関連性がありますが、Rails 3.2 とは明らかにいくつかの違いがあり、この回答で対処しています。ネストされたリソースを含みます。