如何使用rails_admin等将自己的CMS构建到Rails 3.2应用程序中?

时间:2012-05-19 14:17:24

标签: ruby-on-rails-3 content-management-system admin

我为客户建立了一个网站,但他们希望能够使网页内容成为现实,即图片和文字。我已经尝试过并尝试过,但是我无法在我的应用程序中使用像RefineryCMS那样的插件。

我在某处读过有关使用rails_admin,devise,ckeditor,kaminari等制作自己的CMS的人。但是,如何创建自己的CMS /管理区域,以便客户端可以在不弄乱代码的情况下对内容进行成本化或必须学习任何代码?

我有Ruby 1.9.2和Rails 3.2.2。有谁知道如何做到这一点,让我自己的CMS插入这个现有的应用程序?是否有某种教程或任何人可以向我解释这个?提前谢谢!

2 个答案:

答案 0 :(得分:12)

Rails_admin非常好,但对于某些人想要的东西来说往往太多了。开发自己的管理部分非常简单。

如何使用Rails 3.2创建自己的RESTful Admin部分

使用CRUD为所有模型创建自己的Admin部分,包括使用命名空间的嵌套资源。

示例 - 博客的管理员部分 - 模特:发布,评论(邮政的嵌套资源)

我假设你已经开发了基本的博客应用程序。有关如何设置所有内容的信息,请参阅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命名空间

中生成一个空的Admin :: PostsController和Admin :: CommentsController

步骤2 - 为管理员控制器添加命名空间 转到config / routes.rb并添加以下内容

    namespace :admin do
      root to: "admin#index"
      resources :posts do
        resources :comments, :only => [:create, :destroy]
      end
    end

步骤3 - 编辑管理视图和控制器文件以使用admin命名空间 现在我们已经生成了所有生成的东西,我们只需要使用管理控制器而不是前端。

更改所有Admin :: *控制器的继承。

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

为您希望管理CRUD的每个模型添加一个指向views / admin / admin / index.html.erb的链接。比如帖子。

<%= link_to "Posts", admin_posts_path %>

修改admin / posts_controller.rb。将3个redirect_to调用更改为使用admin命名空间。 创建和更新方法:

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&amp; 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仪表板,其中包含指向/ admin / posts和CRUD操作的链接。

喊出http://icebergist.com/posts/restful-admin-namespaced-controller-using-scaffolding。他从2008年开始的解决方案仍然非常重要,但是,这个答案的Rails 3.2显然存在一些差异;包括嵌套资源。

答案 1 :(得分:0)

所以你想要rails_admin ......

安装宝石

$ gem 'rails_admin'

做一个

$ bundle install

然后生成内容

$ rails generate rails_admin:install

然后

$ rails server

现在,您可以访问domain.com/admin上的管理面板 也许你应该在https://github.com/sferik/rails_admin上浏览一下。 如果你有比以前更多的问题,你应该首先考虑学习轨道。 Rails并不是那么容易上传,因为上传wordpress.zip的内容放在一些数据库设置中并完成。