3

我为客户建立了一个网站,但他们希望能够对网页的内容进行定制,即图片和文本。我已经尝试过,尝试过,但我无法获得像 RefineryCMS 这样的插件来在我的应用程序中工作。

我在某处读到有人使用 rails_admin、devise、ckeditor、kaminari 等制作了自己的 CMS。但是我怎样才能制作自己的 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

这将生成一个空控制器,我们所有的 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::*Controllers 的继承。

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 & 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 显然存在一些差异;包括嵌套资源。

于 2013-03-25T12:30:24.147 回答
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 的内容放入一些数据库设置并完成。

于 2012-05-19T15:19:35.817 回答