3

私はクライアントのために Web サイトを構築しましたが、彼らは Web ページのコンテンツ (写真とテキスト) をカスタマイズできるようにしたいと考えています。私は何度も何度も試しましたが、プラグインとして RefineryCMS のようなものをアプリ内で動作させることができませんでした。

rails_admin、devise、ckeditor、kaminari などを使用して独自の CMS を作成した人についてどこかで読みました。コードは?

Ruby 1.9.2 と Rails 3.2.2 を使用しています。これを行う方法を知っている人はいますか?この既存のアプリにプラグインする独自の CMS を作成しますか? ある種のチュートリアルはありますか、または誰かが私にこれを説明できますか? 前もって感謝します!

4

2 に答える 2

13

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 とは明らかにいくつかの違いがあり、この回答で対処しています。ネストされたリソースを含みます。

于 2013-03-25T12:30:24.147 に答える
0

だからあなたはrails_adminが欲しい...

ジェムをインストールする

$ gem 'rails_admin'

する

$ bundle install

次に、コンテンツを生成します

$ rails generate rails_admin:install

それから

$ rails server

これで、domain.com/admin の管理パネルに移動できるようになりまし。以前よりも多くの質問がある場合は、最初に Rails の学習について考えたほうがよいでしょう。Rails は、wordpress.zip のコンテンツをアップロードし、いくつかの db 設定を行って完了するので、それほど使いやすくはありません。

于 2012-05-19T15:19:35.817 に答える